leetcode专题:数组

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.旋转数组

原文地址:https://www.cnblogs.com/shuibeng/p/14228565.html