一些算法的思路
反转链表思路
需要三个指针pre反转后的链表头指针一开始为null,pHead当前反转前链表的头指针,next保存当前头指针的下一个元素。用来while循环
递归的话,就是先判断是否pHead为空或pHead.next为空,是直接返回pHead, 否则,递归自己的函数参数为pHead.next这样pHead后面的就全部反转完毕,并赋值给newNode为最后一个节点,之后pHead.next就是反转的后的最后一个元素的next指向pHead,并pHead的next为空。 最后返回newNode
最大连续子序和
用dp[i]表示以A[i]结尾的最长连续子序和。dp[i] = max{A[i], dp[i-1]+A[i]} 遍历过程中还可以获取最大dp【i】值res
数组的三数之和为0
先将排序,之后固定k之后, i,和j往中间移动
各种排序时间表

数组总和,在一个数组中找出可以使数字和为target的组合。
利用dfs的思路
寻找第k大的数,
思想快排加分治,
我们从a中随机找出一个元素作为枢纽元,把数组分为两部分。其中左边元素都不比枢纽元大,右边元素都不比枢纽元小。此时枢纽元所在的位置记为mid。
如果右半边(包括a[mid])的长度恰好为k,说明a[mid]就是需要的第k大元素,直接返回a[mid]。
如果右半边(包括a[mid])的长度大于k,说明要寻找的第k大元素就在右半边,往右半边寻找。
如果右半边(包括a[mid])的长度小于k,说明要寻找的第k大元素就在左半边,往左半边寻找。