![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
let code
lzlkkk999
这个作者很懒,什么都没留下…
展开
-
1. Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution. Example: Given nums =原创 2016-12-12 10:30:37 · 132 阅读 · 0 评论 -
141. 环形链表
题目: 吐槽:题目只是判断是否是有环的链表,没有让找到成环的点,所以是个比较简单的题目,常使用双指针来进行判断。 代码: public boolean hasCycle(ListNode head) { //1.将快慢指针都指向头节点 ListNode low = head; ListNode fast = head; /...原创 2019-09-02 14:25:47 · 89 阅读 · 0 评论 -
142. 环形链表 II
题目: 吐槽:有一个结论,用数学公式推导出来的,后来也就记住了。当判断快慢指针相交后,将快指针重新指回head处,然后跟慢指针一起一步一步的走,再次相等的点便是成环点。 代码: public ListNode detectCycle(ListNode head) { ListNode low = head; ListNode fast = head; ...原创 2019-09-02 14:44:41 · 69 阅读 · 0 评论 -
206. 反转链表
题目: 吐槽:反转链表经典的解题步骤,通过pre head next三个标志位进行转换进行反转。熟能生巧的思路,多练习,就记住了 代码: public ListNode reverseList(ListNode head) { //定义好辅助标记位,其顺序是pre head next ListNode pre = null; ListNo...原创 2019-09-02 14:52:10 · 75 阅读 · 0 评论 -
349. 两个数组的交集
题目: 吐槽:解法很多,能A掉就行了。有些快捷的思路可以从其它题目中再学。 代码: public static int[] intersection(int[] nums1, int[] nums2) { //1.将两个数组排序 Arrays.sort(nums1); Arrays.sort(nums2); int cou...原创 2019-09-02 15:38:31 · 71 阅读 · 0 评论 -
147. 对链表进行插入排序
题目: 吐槽:直接的想法就是将链表转换成数组,通过插入排序排号序,然后再给链表重新赋值。(letcode不能使用Vector) 代码: public static ListNode insertionSortList(ListNode head) { //复制头节点用于赋值和返回 ListNode copy = head; //1.计算...原创 2019-09-03 10:26:28 · 72 阅读 · 0 评论 -
1030. 距离顺序排列矩阵单元格
题目: 吐槽:1.首先要知道这是个排序的题目。2.将矩阵转换成需要返回的数据格式[C*R][2]的二维数组。3.以一维数组的角度进行比较排序。 代码: public int[][] allCellsDistOrder(int R, int C, final int r0, final int c0) { //1.将矩阵转换成,需要输出的二维数组格式。 i...原创 2019-09-03 11:33:58 · 195 阅读 · 0 评论 -
75. 颜色分类
题目: 吐槽:就是一个变相的荷兰国旗问题,也是三路快排的partition的过程。 代码: public void sortColors(int[] nums) { //很明显的荷兰国旗问题,三路快排的一个步骤 int l = -1; int r = nums.length; int i = 0; int...原创 2019-09-03 11:54:51 · 134 阅读 · 0 评论 -
70. 爬楼梯
题目: 吐槽:1.算一个动态规划的题目,动态规划的题目有一个通用的解体方案:1)写出递归版本。2)写出记忆化搜索的版本3)动态规划版本(就是递归改非递归的方式)。 2.似于斐波纳挈数列.假设梯子有n层,到达n层的时候要么是从n-1层上来的,要么是从n-2层上来的。从n-1层上来只有一种方法,从n-2层上来有2种方法。f(n) = f(n-1)+f(n-2) 代码: 递归版本: p...原创 2019-09-10 11:20:17 · 87 阅读 · 0 评论 -
746. 使用最小花费爬楼梯
题目: 吐槽:1.首先作为一个动态规划的题目,我的解题方式都是先写递归版本的再改成非递归版本的,然而在网上别人的答案都直接是非递归版本,边界解释的也不清楚,最后自己一点点调试折腾了半天,感觉还是很有收获的。 2.这个题目代码虽然简单,看似是个水题,但是分的情况其实是很多的,在第一次A这种题的情况下想把代码写的很精炼我觉得难度还是很大的,所以我把各种情况的判断,分解出来。 代码: 递归版...原创 2019-09-10 18:20:26 · 102 阅读 · 0 评论 -
976. 三角形的最大周长
题目: 吐槽:排序好,从后往前,两边之和大于第三边,数学类的问题。 代码: public int largestPerimeter(int[] A) { if(A.length<3){ return 0; } //边从小达大排序 Arrays.sort(A); //从后往前两...原创 2019-09-10 18:24:08 · 194 阅读 · 0 评论 -
121. 买卖股票的最佳时机
题目: 吐槽:A掉很简单的题目,穷举就可以了。写动态规划的时候发现,这个思路有点跟滑动门的算法有点类似。 穷举法: /** * 双重循环把后面的一次减去前面的值,将最大值保存住即可 * @param prices * @return */ public int maxProfit(int[] prices) { int max =...原创 2019-09-11 11:22:18 · 64 阅读 · 0 评论 -
122. 买卖股票的最佳时机 II
题目: 吐槽:1)只要你理解题目,当天卖了可以再当天买2)只要你炒过股做波段可以降低成本。就可以很容易A掉这个题目 代码: 贪心算法 public static int maxProfit1(int[] prices) { //返回结果最多能赚多少钱 int result = 0; for(int i =1;i<prices.l...原创 2019-09-11 14:15:15 · 236 阅读 · 0 评论 -
62. 不同路径
题目: 吐槽:可以通过数学分析得出计算公式。表达出公式就可以A掉这个题。 代码 /** * * 得出计算公式C(m+n-2,Math.min(m-1,n-1)),m+n-2是总的要走的步数,Math.min(m-1,n-1)是往一个方向要走的步数(我们选择最小的那个方向)。 * @param m * @param n * @return...原创 2019-09-12 14:29:15 · 108 阅读 · 0 评论 -
112. 路径总和
题目: 吐槽:题目中有个重点的概念,从根节点到叶子节点。叶子节点 的概念是:左孩子为null,右孩子也为null。 代码: 递归版本 public boolean hasPathSum(TreeNode root, int sum) { //该终止条件:1.root开始为null的返回。2.递归到叶子节点后不满足条件的再次循环的结束条件 if(r...原创 2019-09-17 15:14:45 · 92 阅读 · 0 评论 -
92. 反转链表 II
题目描述: 吐槽:链表反转的升级版本,细致的题目,思路写完debug一点点调试,怎么都能过。修改完成总结一下会有比较大的收获。 代码: public static ListNode reverseBetween(ListNode head, int m, int n) { //统计节点的个数 int count = 1; //保存头部节点...原创 2019-09-02 13:57:51 · 111 阅读 · 0 评论 -
160. 相交链表
题目链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/submissions/ 题目描述: 题目问题和难点: 1.是找相交的那个节点,而不是值相等的节点。(示例中1的值相同但不是相交的节点) 2.此题目不考虑有环的链表所以思路很简单。 public static ListNode getInt...原创 2019-09-01 12:03:00 · 97 阅读 · 0 评论 -
53. 最大子序和
题目: 吐槽:从任何一个位置开始,只要相加的和<0就把前面的数全都舍弃,拿当前的数和最大值进行比较,留下最大的数。和小于0的结果对后面数相加增大没有任何的帮助。 代码: public int maxSubArray(int[] nums) { //返回的结果,求和的最大值 int result = nums[0]; //求的的连续子...原创 2019-09-17 15:37:06 · 410 阅读 · 0 评论