LeetCode算法
Tylgdx507
这个作者很懒,什么都没留下…
展开
-
116. 填充每个节点的下一个右侧节点指针
思路:利用广度优先遍历,即可 // Definition for a Node. class Node { public int val; public Node left; public Node right; public Node next; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, Node ..原创 2020-10-15 09:22:08 · 150 阅读 · 0 评论 -
530.二叉搜索树的最小绝对差
二叉搜索树:根节点的左子树都比根节点小,右子树都比根节点大 思路:二叉搜索树的中序遍历,是从小到大排序的,利用这个可以简单想出思路 class Solution { int min = Integer.MAX_VALUE; int temp = -1; public int getMinimumDifference(TreeNode root) { midSearch(root); return min; } public void .原创 2020-10-12 21:43:09 · 108 阅读 · 0 评论 -
142. 环形链表 II 双指针法
思路: 第一次相遇时: fast走的步数是slow的2倍,即:f=2s fast比slow多走了n个环,假设环的长度是b,f=s+nb 因此有f=2nb, s=nb 分析: 让指针从头部一直走k步,那么所有走到链表入口节点时的步数是:k=a+nb.而目前slow已经走了nb,因此再让slow走a步就到入口处了。 第二次相遇时: slow位置不变,fast指向头结点,slow与fast每次都只走一步,再相遇时的节点即是入口节点。 public ListNode detectCycle(ListNode he.原创 2020-10-10 21:44:21 · 118 阅读 · 0 评论 -
LeetCode 322. 零钱兑换 多种思路
自下而上动态规划 自上而下动态规划 递归加记忆化 贪心法原创 2020-10-09 21:43:29 · 115 阅读 · 0 评论 -
从零开始的LeetCode--03删除链表的倒数第N个节点
我的代码和思路: 1.首先遍历一遍链表,拿到链表的长度 2.如果长度减去要删除节点的倒数信息n(长度-n)等于0的话,删除首节点,返回节点 3.否则,遍历到要删除的节点,删除返回即可 public ListNode removeNthFromEnd(ListNode head, int n) { ListNode node = head; int temp = 0; while (node != null){ temp += 1; .原创 2020-06-24 21:42:56 · 149 阅读 · 0 评论 -
从零开始的LeetCode--02两数相加
我的方法和思路: 把两链表转换为数,然后相加,再转换为链表,事实证明,我的思路完全错误了,刚开始我将数字全设为int,后来设为long,但是最大只能支持有限位数。所以在思路上就已经错了 我的代码 public ListNode addTwoNumbers(ListNode l1, ListNode l2) { int tem = 0; long i1 = 0, i2 = 0; while (l1 != null) { i1 += (.原创 2020-06-23 21:38:43 · 139 阅读 · 0 评论 -
从零开始的LeetCode--01两数之和
我的方法: public class Solution { public int[] twoSum(int[] nums, int target) { int[] targets = new int[2]; for(int i = 0;i < nums.length;i++){ for(int j = i + 1;j < nums.length;j++){ if(nums[i] + nums[j] .原创 2020-06-23 20:03:59 · 110 阅读 · 0 评论