1.删除排序数组中的重复项
- 思路解析:本题的主要目的是删除重复项,限制是:1.数组是排序数组;2.必须原地修改;那其实只需要遍历然后把不同项前移
- 代码:
class Solution {
public int removeDuplicates(int[] nums) {
int i = 0, j = 0;//j标记已修改数组的位置
while(i < nums.length-1)
{
if(nums[i] == nums[i+1]){
i++;
}else{
nums[++j] = nums[++i];//已经默认nums[0]不修改
};
}
return j+1;
}
}
2.买卖股票的最佳时机Ⅱ
- 思路解析:本题的目的是获取最大的利润;条件是可以完成任意次交易;那其实只需要在每一个递增的阶段都做一次买卖。
- 代码:
class Solution {
public int maxProfit(int[] prices) {
int i = 0, profit = 0;
while(i<prices.length - 1){
if(prices[i]<prices[i+1]){//当可以获得利润,就做一次交易
profit += prices[i+1]-prices[i];
}
i++;
}
return profit;
}
}
3.旋转数组