LeetCode初级算法高效题解(含思路注释)
文章目录
- LeetCode初级算法高效题解(含思路注释)
- 前言
- 一、数组
- 1.删除排序数组中的重复项
- 2.买卖股票的最佳时机 II
- 3.旋转数组
- 4.存在重复元素
- 总结
前言
决定用四个月过一下算法
一、数组
1.删除排序数组中的重复项
class Solution {public int removeDuplicates(int[] nums) {int left=0;//请你 原地 删除重复出现的元素,使每个元素 只出现一次 for(int right=1;right<nums.length;right++){//如果右等于左,左不变,右加一if(nums[right]!=nums[left]){//左指针先往前再赋值left++;nums[left]=nums[right];}}return left+1;}
}
2.买卖股票的最佳时机 II
class Solution {public int maxProfit(int[] prices) {int sum=0;//本题即求无序数组的最大值与最小值的差for(int i=0;i<prices.length-1;i++){//注意length-1这里外层循环遍历到倒数第二个即可if(prices[i+1]>prices[i]){//如果后一个大于前一个则把两者差值存进sumsum+=prices[i+1]-prices[i];//两两前后遍历的差值和即为最低值与最高值的差值}}return sum;}
}
3.旋转数组
class Solution {public void rotate(int[] nums, int k) {int length=nums.length;int[] tem=new int[length];//先用临时数组存原数组方便后边原数组存值for(int i=0;i<length;i++){tem[i]=nums[i];}//用i与偏移量k两者和去取余数组长度,得到偏移后的位置for(int i=0;i<length;i++){nums[(i+k)%length]=tem[i];}}
}
4.存在重复元素
class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set=new HashSet<>();//hashSet重复元素不可插入for(int i=0;i<nums.length;i++){//hashSet.add如果返回false则说明有重复元素插入if(!set.add(nums[i])){return true;}}return false;}
}
总结
这个月先过一遍基础算法,后边再做打算。