每天一道leetCode

1、删除排序数组中的重复项

 

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

 

题目解析: O(1) 额外空间是指空间复杂度。空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。比如直接插入排序时间复杂度是O(n^2),空间复杂度是O(1) 。

解题思路:循环遍历数组,计算不重复的元素个数j,一旦遇到不重复元素则进行替换。返回值为j。

另一种解法: 循环遍历数组,计算重复的元素个数j,一旦遇到不重复元素则进行替换。返回值为nums.length-j。

第三种解法:使用splice()。

 

2、买卖股票的最佳时机 II

 

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

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

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

 

方法一: 按人的思维来,遍历数组,第i天一旦比后一天低即买入,一旦比后一天高即卖出,连续增加或降低期间不作为。

方法二: 按程序的思维来,遍历数组,只要是后一天比前一天票价高那么他们之间的票价差之和即为最大利润,可同一天买入卖出。

ps:开始没考虑股票为0的情况,我是真的不知道股票还能为0……

 

 

 

 

 

 

posted @ 2019-11-16 18:15  yeyexun  阅读(250)  评论(0)    收藏  举报