随笔分类 - 剑指leetcode
摘要:1、题目描述: https://leetcode-cn.com/problems/all-ancestors-of-a-node-in-a-directed-acyclic-graph/ 2、思路: 遍历一遍二维数组,可以统计出所有节点的父节点;因此要想知道一个节点的所有祖宗节点,就再拿到父节点,去
阅读全文
摘要:1、题目描述 https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/submissions/ 2、解题思路: https://leetcode-cn.com/problems/binary-tree-maximum-path-su
阅读全文
摘要:1、题目描述 33. 搜索旋转排序数组 2、思路: 数组经过旋转后,还是部分有序,还是用二分法,找到数组的mid,然后看到底是前半段有序,还是后半段有序,因为只要这半段是有序的,就可以用target去比较这半段的起点和这半段的终点,来判断target是否是在这半段中。就可以知道到底该往哪个方向缩小范
阅读全文
摘要:147. 对链表进行插入排序 思路: 与数组插入排序的思路相同,都是先有一个有序序列,然后拿着待插入元素,在有序序列中找到正确的位置; 链表有序序列的初始化方式就是,先定义一个哨兵dummyNode,然后让head节点成为第一个有序的序列的元素,维护一个lastSortNode保存有序序列的最后一个
阅读全文
摘要:148. 排序链表 思路: 采用对数组进行归并排序的相同思路,依旧是对链表进行递归,递归到只有一个元素的时候,在对链表进行合并操作。 只不过,在查找链表的中间点的方式是利用快慢指针。在合并两个有序链表的时候,创建哨兵进行合并。 图解答案,自顶向下归并排序:https://leetcode-cn.co
阅读全文
摘要:11. 盛最多水的容器 class Solution { public int maxArea(int[] height) { if (height == null || height.length == 0) { return 0; } int start = 0; int end = heigh
阅读全文
摘要:23. 合并K个升序链表 思路: 将两个有序链表合并,推广到n个链表的合并,就是将n个链表两两合并,再合并,就是归并排序的思维,现将数组递归到单个元素终止,然后执行两两merge。 https://leetcode-cn.com/problems/merge-k-sorted-lists/solut
阅读全文
摘要:15. 数组中的第K个最大元素 package 数组; import jdk.nashorn.internal.ir.CallNode; import java.util.Random; public class 数组中的第k大元数 { public static void main(String[
阅读全文
摘要:43. 字符串相乘 package 字符串; public class 字符串相乘 { public static void main(String[] args) { String num1 = "123"; String num2 = "456"; 字符串相乘 o = new 字符串相乘();
阅读全文
摘要:394. 字符串解码 package 字符串; import java.util.Stack; public class 字符串解码 { public static void main(String[] args) { String s = "3[a2[c]]"; 字符串解码 o = new 字符串
阅读全文
摘要:146. LRU 缓存机制 (1)直接使用LinkedHashMap package 链表; import java.util.LinkedHashMap; import java.util.Map; public class LRUCache extends LinkedHashMap<Integ
阅读全文
摘要:7. 整数反转 package 字符串; public class 整数反转 { public static void main(String[] args) { 整数反转 o = new 整数反转(); System.out.println(o.reverse2(-2147483412)); //
阅读全文
摘要:5. 最长回文子串 package 动态规划; public class 最长回文子串 { public static void main(String[] args) { String s = "aaaa"; 最长回文子串 o = new 最长回文子串(); System.out.println(
阅读全文
摘要:4. 寻找两个正序数组的中位数 package 数组; public class 找两个正序数组的中位数找第k小的数 { public static void main(String[] args) { // int[] a = {1, 3, 4, 9};//长度为4 // int[] b = {1
阅读全文
摘要:2. 两数相加 /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val
阅读全文
摘要:50. Pow(x, n) 1、快速幂: (1)递归解法: (2)迭代解法: package 数组; public class Pow { public static void main(String[] args) { Pow pow = new Pow(); System.out.println
阅读全文
摘要:https://leetcode-cn.com/problems/3sum/ package 数组; import java.util.Arrays; import java.util.HashMap; public class 两数之和 { public static void main(Stri
阅读全文
摘要:https://leetcode-cn.com/problems/3sum/ 思路: 方法一:数组排序后,三重暴力循环,排序的目的是一种方便获得不重复解的手段 方法二:数组排序后,利用双指针,因为数组排序后,元素有小到大,便于和0进行比较; package 数组; import java.util.
阅读全文
摘要:1、代码: https://leetcode-cn.com/problems/permutations-ii/submissions/ class Solution { public List<List<Integer>> permuteUnique(int[] nums) { ArrayList<
阅读全文