力扣打卡——day01

力扣打卡——day01 128. 最长连续序列 - 力扣LeetCode这道题目最开始大家想的肯定是sort然后计数计算最长序列。但是要求时间复杂度为o(n)就不能用sort了。一般在leetcode中对时间复杂度有要求就用空间来换对空间复杂度有要求就用时间来换。基于这种思路我们就想要求最长的就是要记录下有没有相邻的元素比如遍历到100这个元素我们需要查看[99, 101]这两个元素在不在序列中这样去更新最大长度。而记录元素有没有这个事我们太熟悉了用set这种数据结构而set这种数据结构是需要o(n)的空间来换取的这就是我们刚才说的用空间来换时间。class Solution { public int longestConsecutive(int[] nums) { //使用空间复杂度进行换时间复杂度 SetInteger numsSetnew HashSet(); for(int num:nums){ numsSet.add(num); } int longMax0; for(int num: nums){ int numbernum; if(numsSet.remove(number)){ int currtLength1; //向左进行移动 while(numsSet.remove(number-1)) number--; currtLength(num-number); //向右进行移动 numbernum; while(numsSet.remove(number1)) number; currtLength(number-num); //最后进行比较 longMax Math.max(currtLength,longMax); } } return longMax; } }283. 移动零 - 力扣LeetCode思路 使用双指针将非0的数据向前移动末尾进行补零class Solution { public void moveZeroes(int[] nums) { //使用双指针就行 int slow0; //将非0的数据向前移动 for(int fast0;fastnums.length;fast){ if(nums[fast]!0){ nums[slow]nums[fast]; } } //末尾进行补零 for(;slownums.length;slow){ nums[slow]0; } } }