笔试、面试算法
文章平均质量分 50
收集互联网各大厂笔试、面试算法题
JohnnyLin00
持续输出学习 持续发光 共同进步!
展开
-
week2腾讯2019 暑期实习提前批笔试——acwing568. 奇妙的数列
然后计算区间内元素对数(r - l + 1) / 2,区间元素个数为r - l +1,如果区间内总数为偶数,必然是一正一负刚好成对。如果为奇数,需要判断区间右端点r位置数字奇偶性,并加到sum上。判断区间起始位置l的奇偶性,若为偶数,则偶奇交替,一对和为1,反之为-1。原创 2024-05-24 11:27:11 · 167 阅读 · 0 评论 -
腾讯2019 暑期实习提前批笔试 —— AcWing 570. 气球游戏
【题目描述】AcWing 570. 气球游戏【思路】双指针,i在右,j在左。i从左至右依次扫描,每扫描一个相应更新s[ c[i] ]和颜色数colors,当颜色数达到要求m时,尝试移动j指针使得在满足colors==m的情况下,j离i越近越好。因此j的移动是有条件的,即:s[ c[j] ] > 1 || c[j] == 0import java.util.Scanner;public class Main{ static int N = 1000010, M = 201原创 2021-07-14 20:31:28 · 162 阅读 · 0 评论 -
Week2 腾讯2019 暑期实习提前批笔试 —— ACWing 569. 猜拳游戏
【题目描述】569. 猜拳游戏 x/y (mod p) 等于x乘以 y的模逆元,而y的模逆元等于 y^(p - 1),可以使用快速幂计算【思路】目标: 计算 C(n, s) * 2 ^( n - s) % p上式C(n, s) * 2 ^( n - s) % p = A(n,s) /s! * 2 ^( n - s) % p在计算阶乘的过程中可能出现数据范围溢出 根据费马小定理可以转化为 模逆元计算 求 1/s!(mod p) 实际上就是 求 s^(p -2) ( 要求 s %原创 2021-07-13 17:53:43 · 131 阅读 · 0 评论 -
面试算法题 专题(一) —— 字符串
面试题 01.09. 字符串轮转【题目描述】面试题 01.09. 字符串轮转解法一【思路】指向s1的指针从前往后遍历逐一与s2的头一个字符比较 ,相等位置即为可能的旋转位置。旋转词极可能为: c[i + 1: n -1] + c[0:i]class Solution { public boolean isFlipedString(String s1, String s2) { if( s1 == null || s2 == null) return false;原创 2021-07-03 13:43:19 · 481 阅读 · 0 评论 -
数据结构刷题集合(二)—— 树
【题目描述】226. 翻转二叉树【思路】在遍历过程中,对左右节点进行两两交换。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(i原创 2021-07-03 13:37:53 · 75 阅读 · 0 评论 -
数据结构刷题集合(一)—— 链表
【题目描述】LeetCode 141. 环形链表【思路】快慢双指针,起始p和q同指向头结点。之后p走一步,q走两步,p追赶q,若为环则p、q指针循环一周必定相遇,可以得出环长为p走过的步数。如不为环,则q或q.next最后一定为尾结点/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { *原创 2021-07-03 13:36:30 · 106 阅读 · 1 评论 -
剑指Offer打卡目录(Java实现)
剑指Offer打卡day1—— AcWing 13. 找出数组中重复的数字剑指Offer打卡day2—— AcWing 14. 不修改数组找出重复的数字剑指offer打卡day3—— AcWing 15. 二维数组中的查找剑指Offer打卡day3—— AcWing 16. 替换空格剑指Offer打卡day4——AcWing 17. 从尾到头打印链表剑指Offer打卡day5—— AcWing 18. 重建二叉树剑指Offer打卡day5——AcWing 19. 二叉树的下一个节点剑指Offe原创 2021-07-03 13:30:36 · 287 阅读 · 0 评论 -
LeetCode全排列、全排列II
【问题描述】给定一个 没有重复 数字的序列,返回其所有可能的全排列。【示例】输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]【题目来源】46.全排列class Solution { public void dfs(int m,int []a,boolean vis[],List<Integer> sub,List<List<Integer>> ans) {原创 2020-10-16 22:46:09 · 234 阅读 · 0 评论 -
LeetCode子集、子集II的三种解法
文章目录子集解法一、DFS解法二、回溯解法三、枚举子集II解法一、DFS+HashSet判重解法二、回溯+排序解法三、枚举子集【题目描述】给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。【说明】:解集不能包含重复的子集。【示例】:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]【来源】78. 子集解法一、DFS每一个数有选和不选两种选择,对于含重复元素的整数数原创 2020-10-09 23:22:21 · 861 阅读 · 0 评论 -
LeetCode专场:专题一 数组排序
文章目录有序数组的平方合并排序的数组部分排序逆序对个数颜色分类最大间距数组部分小小结有序数组的平方【问题描述】给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例 1:输入:[-4,-1,0,3,10]输出:[0,1,9,16,100]示例 2:输入:[-7,-3,2,3,11]输出:[4,9,9,49,121]提示:1 <= A.length <= 10000-10000 <= A[i] <= 10000A原创 2020-10-13 18:09:07 · 649 阅读 · 0 评论 -
【2019京东笔试】—— AcWing 681. 疏散人群
【题目描述】DFS写法【思路】左右子树节点个数较大者即为最短疏散时间//左右子树节点个数较大者import java.util.Scanner;import java.util.Arrays;public class Main{ static int N = 100010; static int M = 100010 * 2; static int e[] = new int[M]; static int ne[] = new int[M]; sta原创 2021-05-14 20:14:04 · 98 阅读 · 0 评论 -
【牛客网】调整数组顺序使奇数位于偶数前面
【题目描述】输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。调整数组顺序使奇数位于偶数前面 做法1:利用双指针l和rl将奇数从左到右存放到辅助数组helperr则将偶数从右到左存放到辅助数组helper最后秩序调整右半段的顺序即可package 快排及其应用;import java.util.Arrays;/*** @author JohnnyLin* @ve原创 2020-10-05 21:25:48 · 137 阅读 · 1 评论