2024/10/7力扣

sys Lv2

开启算法系列!😊

先从力扣100题开刷,记录优秀思想和不好背的题

1. 两数之和

题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();
for (int i = 0; i < nums.length; ++i) {
if (hashtable.containsKey(target - nums[i])) {
return new int[]{hashtable.get(target - nums[i]), i};
}
hashtable.put(nums[i], i);
}
return new int[0];
}
}

整个算法复杂度是O(N)
这里的哈希表查找hashtable.containsKey的复杂度是O(1)
因为哈希表的工作原理是把键值经计算转换为它自己数组的索引,不用挨个对比键值。

283. 快慢指针

题目描述:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public void moveZeroes(int[] nums) {
int slow = 0;
for(int i = 0; i < nums.length; i++) {
if (nums[i] != 0) {
int temp = nums[i];
nums[i] = nums[slow];
nums[slow] = temp;
slow++;
}
}
}
}

这段代码比官方题解少了swap函数,少了一个int n = nums.length就比官方执行少了2ms,看来精简一点算法还是有益处的。
快慢指针关键在于快指针的结束,然后就是指针移动过程中的操作了。

今天就先更新这两个把

⛽(/≧▽≦)/ 加油加油都给我加油

就算喜欢的人已经和别人确定恋爱关系了也要加油

对的人会站在我们的前途里

非淡泊无以明志,非宁静无以致远。 –诫子书

永恒燃烧的羽翼,带我脱离凡间的沉沦。 –英雄联盟天使
就像这句话说的,努力学习的时候会忘掉所有的痛苦的
加油加油

国庆假期学完了ssm,感觉真厉害spring,上下文这个机制也很厉害,很多技术都在用啊感觉。
后面学一学高级maven、回顾一下springboot和mybatis-plus,然后就是netty和redis了,有时间看一看spring的源码,争取寒假之前把这一套学完,寒假看看有没有机会实习,没有的话就自己搞几个项目了好写简历里。

  • 标题: 2024/10/7力扣
  • 作者: sys
  • 创建于 : 2024-10-07 21:23:54
  • 更新于 : 2024-10-08 15:23:43
  • 链接: https://yyd-piren.github.io/2024/10/07/2024-10-7力扣/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论