
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
MAX记录的是i位置右边的最大值,则i位置买卖股票的最大收益即为MAX-prices[i]。ret用于记录最大的收益,初始化为0。从后往前遍历prices向量,更新ret值,再更新MAX值,最后返回ret,即为所求。

按照题目意思,直接,这种方法重复计算太多。由于解法一重复计算太多,比如在计算fib(5)的时候需要计算fib(3)和fib(4),在计算fib(4)的时候也要计算fib(3),重复计算过多。我们可以用一个数组,将前面计算过的结果存储起来,如果需要的结果是前面计算过的,就直接使用即可。由于fib(n)=fib(n-2)+fib(n-1),所以,可以开辟一个数组dp来存放相应的斐波那契数值,dp[i]

本题与荷兰国旗问题有一定的区别,如果用三指针来解决,相对顺序是有可能被打乱的,所以本题可以使用直白的三次遍历,即。,分别将<pivot的数,=pivot的数,>pivot的数加入ret向量。

由于题目描述比较清晰,所以我们可以采用模拟的方法来解决这个问题。

画出模拟解决这个问题,可以采用的方法来解决这个问题。

遍历字符串,按照题目要求进行处理就可。

(1)首先,初始化slow指针为nums[0],fast指针为nums[nums[0]],slow指针每次走一步,fast指针每次走两步,直至slow==fast;(2)再定义一个新指针ptr,初始化为nums[0],ptr和fast每次走一步,直至二者相遇,返回此时的ptr,即为所求。由于本题的数字的范围为[0,n],数组的下标为[0,n],经过分析可以得知本题实质上是在找环的入口,可以使用。首

来记录窗口中元素出现的次数,map的键是窗口中的数,值为该数字在窗口中出现的次数。由于map的底层实现是红黑树,所以。,将其加入ret向量即可。

由题意可知,本次的选择基于前面的结果,所以可以使用动态规划来解决这个问题。

由于本题是要找出出现了两次的两个数字,所以我们可以借用来解决这个问题。在遍历数组nums的过程中统计数字出现的次数,hash[i]的值即为i出现的次数,当然,由于2<=n<=100,所以我们可以使用数组来模拟哈希表,当hash[i]==1时,将nums[i]加入ret向量,遍历完后返回ret即可。








