题目1

1、给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

给定数组 nums = [1,1,2], 

函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 

你不需要考虑数组中超出新长度后面的元素
class Solution{
    public int removeDuplicates(int[] nums){
        int len = nums.length;
        if(len == 0){
            return 0;
        }
        int j = 0;
        for(int i = 0 ; i < len ; i++){
            if(nums[i] != nums[j]){
                nums[++j] = nums[i];
            }

        }
        return ++j;
    }
}

2、给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
     随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
class Solution{
    public int maxprofit(int[] prices){
        int len = prices.length;
        if(len == 0){
            return 0;
        }
        int max = 0;
        int d = 0;
        for(int i = 1 ; i < len ; i++){
            d = prices[i] - prices[i-1];
            if( d > 0)
                max += d;
        }
        return max;
    } 
}

猜你喜欢

转载自blog.csdn.net/Wilder_ting/article/details/80057079