力扣刷题Hot100

今天有点忙...选了个HOT题目较少的章节刷/

  1. 136. 只出现一次的数字 - 力扣(LeetCode)
  2. 169. 多数元素 - 力扣(LeetCode)
  3. 75. 颜色分类 - 力扣(LeetCode)
  4. 31. 下一个排列 - 力扣(LeetCode)
  5. 287. 寻找重复数 - 力扣(LeetCode)

只出现一次的数字

经典异或题

当且仅当两个输入值不同时,异或运算输出为真(1),否则输出为假(0),即“同为 0,异为 1”。

java
复制代码
class Solution { public int singleNumber(int[] nums) { int ans = 0; for (int x : nums){ ans ^= x; } return ans; } }

多数元素

推荐题解:169. 多数元素 - 力扣(LeetCode)

个人理解:使用投票法,假设我们已知某个数是众数了,那么我们指定一个投票规则,遍历数组,但钱元素是众数票数+1

否则票数-1,那么理论上票数最终会是大于0的。那么现在问题是如何确定众数?

同样利用票数的规则,如果我们遍历到某个数,发现当前票数==0,意味着已经出现众数了,并且,众数后续还会出现,答案也肯定能在后面能找到。那么我们可以将当前的元素假设为众数,并用一个变量记录,后续在投票,后面遍历的元素等于假设的众数,票数+ 1.否则 - 1;

如果当前票数<0,意味着,前面非众数数量大于众数的数量;

0 则意味着,已经出现众数了,择当前记录的假设的众数变量就是众数

java
复制代码
class Solution { public int majorityElement(int[] nums) { int x = 0; int votes = 0; for (int c : nums){ if (votes == 0){ x = c; } votes += x == c ? 1 : -1; } return x; } }

颜色分类

经典三色问题

java
复制代码
class Solution { public void sortColors(int[] nums) { int n0 = 0; int n1 = 0; int n = nums.length; for (int i = 0; i < n; i++){ int temp = nums[i]; nums[i] = 2; if (temp < 2){ nums[n1 ++] = 1; } if (temp < 1){ nums[n0 ++] = 0; } } return; } }

下一个排列

推荐题解:31. 下一个排列 - 力扣(LeetCode)

java
复制代码
class Solution { private int[] nums; public void nextPermutation(int[] nums) { this.nums = nums; int n = nums.length; if (n == 0 || n == 1){ return; } for (int i = n - 2; i >= 0; i --){ if (nums[i] < nums[i + 1]){ for (int j = n - 1; j > i; j--){ if (nums[j] > nums[i]){ swap(i,j); rserve(i + 1, n -1); return; } } } } rserve(0,n-1); return; } private void swap(int i ,int j){ int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; return; } private void rserve(int i , int j){ while (i < j){ swap(i , j); i ++; j --; } return; } }

寻找重复数字

暴力map能做,但是有个更有意思的做法,这个思路跟缺失的第一个正数那道题很像。

核心思路:环形链表

java
复制代码
class Solution { public int findDuplicate(int[] nums) { int slow = nums[0]; int fast = nums[0]; while (true){ slow = nums[slow]; fast = nums[nums[fast]]; if (slow == fast){ fast = nums[0]; while (slow != fast){ fast = nums[fast]; slow = nums[slow]; } return fast; } } } }
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
quan
作者分享
来上海啦,有没有租房的推荐哇,在徐汇区上班,酒店太贵了🤑。
4
好久没冒泡了,力扣热题100题分享也停更好久了。 但是也没浪费这段时间,这段时间总体是玩+面试+毕设。结果总体毕设差不多了,以及拿到了游族网络的实习offer,年后入职,java和kotlin,说是有转正机会。说实话还是有点犹豫的,因为后面有春招,我怕实习冲突,毕竟也不可能说把机会全压在这一个公司。然后又想去试试,毕竟也算是个国内比较大的游戏公司了,再刷个实习经历简历试试。 唉,这个就业形势,双非仔真的很难哦,我都开始做两手准备,测开,真的我这段时间也在看这方面的知识,我后面投大厂春招的话,真的会all in测开了碰碰运气了,java做第二手中厂或者游戏公司的准备。 我不喜欢说大话(社恐bushi)也没啥大目标,毕竟自己的实力和背景在这,所以我认为这也是我看的很开的原因,有份工作就不错了。。。说实话我还是这一届学院第一个有正儿八经的符合专业方向的应届生,然后总共也没几个有实习经历,有不少都去了学校合作的培训机构学游戏和嵌入式了,然后放弃秋招,直接春招,我看不懂。我玩的好的室友也是学游戏,然后让他年后来上海游族网络投递找我玩,哈哈哈。 不知不觉又写了怎么多,大家觉得我的年后安排合理吗(边实习边春招),大家可以分享一下自己的经历让我参考参考。😜 tips:上海租房好贵哦,公司在徐汇区,有推荐的嘛?
3
泛微网络深圳三面结束,挂了。。。。麻了,聊的挺好的啊,可能是我薪资要高了???不会吧,我问过朋友的,也有可能是我说我比较介意二开,更喜欢做新项目,太操蛋了,挂了,直接拉黑,没一点反馈。。。。 算了,反正也没什么意愿,因为做的业务不喜欢。 卧槽,成都的MOKA刚刚来电话了,周三面试,实习转正岗位(这又是什么时候投的?🤣) 转正9k * 15。 兄弟们这薪资怎么说??? 我先接面试试试我的技术水平吧。
2
泛微网络实习面经
3
昨天没刷力扣,因为把牙齿去了。wuwuuwu~ 今天在准备一个实习面试,没错,我刚结束上段实习就有收到了一家公司的面试邀请,空谷网络科技,我都不知道什么时候投的....反正也接受了面试当经验了,hr给我安排好像直接就是老板面???没聊啥技术,纯聊个人发展情况....... 明天继续HOT刷题进度。
5
下载 APP