leetcode
@东辰
不知道自己不知道,知道自己不知道,知道自己知道,不知道自己知道。
展开
-
LC47 binary-tree层级遍历
题目 import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode类 * @return int整型ArrayList<ArrayList<&g原创 2020-08-29 22:04:19 · 140 阅读 · 0 评论 -
LC 39 balanced-binary-tree
题目 解题 首先利用递归计算左右子树高度,其中叶子阶段为空(base case)所以返回0; 计算高度int leftHeight=getHeight(root.left); int rightHeght=getHeight(root.right); 返回左右子树最大的高度 然后比较左右子树最大高度,发现根节点平衡了,左右数不一定平衡,所以继续递归,查看子树是否平衡。 理解递归,不要套在里边,要直接分析最简单的情况怎么实现,在宏观的查看规律。还有一定要设置出口条件,不然死循环出错。 这种解决方法复杂度原创 2020-08-16 22:44:00 · 124 阅读 · 0 评论 -
LC35 populating-next-right-pointers-in-each-node
题目 解题 这个题的难点是两个相邻节点却不是同一个父亲的next的设置。 注意这个颗树是完全二叉树。 public class Solution{ public void connect(TreeLinkNode root){ if(root==null)return; while(root.left!=null){ TreeLinkNode node=root; while(node!=null){原创 2020-08-16 21:31:05 · 133 阅读 · 0 评论 -
LC31 triangle
题目 解题 这是一个动态规划问题,查询最短路劲 先保存最后一行数据, 每次向上走都会减少一个选择,最后只有一个选择 如上图,倒数第二层开始选择相邻最小的路劲,往上迭代最后的结果就会出现在temp[0]的位置 最关键的就是上面这句代码,从下至上,动态的选择最短路径。 public static int minimumTotal(ArrayList<ArrayList<Integer>> triangle) { if (triangle.size() == 0原创 2020-08-16 17:21:38 · 200 阅读 · 0 评论 -
LC 29 best-time-to-buy-and-sell-stock-ii
题目 解答 之后后一天比前一天贵就赚 其他情况都是亏的 public static int maxProfit(int[] prices) { // write code here if (prices == null || prices.length <= 0) { return 0; } int max = 0; for (int i = 1; i < prices.le原创 2020-08-16 16:17:58 · 144 阅读 · 0 评论 -
LC10 linked-list-cycle
题目 解析 定义两个指针,一个遍历快,一个遍历慢(快慢指针)。 如果链表有环的话,两个指针会相见。 注意要判断fast.next!=null否则如果不是闭环会产生fast=null.next会报错,空指针异常。 /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x;原创 2020-08-16 15:33:58 · 151 阅读 · 0 评论 -
LC7 binary-tree-preorder-traversal
题目 解答 先序排序 先判断根节点是否为空 在判断左节点是否为空 在判断有节点是否为空 依次迭代 ArrayList<Integer> result = new ArrayList<>(); public ArrayList<Integer> preorderTraversal(TreeNode root) { // write code here if (root == null) { retur原创 2020-08-16 14:54:57 · 124 阅读 · 0 评论 -
LC142 Reverse-Integer
public static int reverse(int x) { int flag = x > 0 ? 1 : -1; //保存正负号 x = x * flag;//转为正数 int result = 0; while (x != 0) { if (result > Integer.MAX_VALUE) { return 0; } ...原创 2020-08-07 09:37:40 · 153 阅读 · 0 评论 -
LC144 longest-palindromic-substring
自己搞错了String.indexOf(String s)和String.charAt(char ch)。 import java.util.*; public class Solution { /** * * @param s string字符串 * @return string字符串 */ public String longestPalindrome(String s) { // write code here .原创 2020-08-05 08:24:29 · 131 阅读 · 0 评论 -
LC145 add-two-numbers
temp是进位后数值,当两个链表为空的时候也得判断temp是否为0 public ListNode addTwoNumbers (ListNode l1, ListNode l2) { // write code here //保留进位 //位置 int flag=0; //进位 int temp=0; ListNode list=new ListNode(0); ...原创 2020-08-03 08:20:29 · 156 阅读 · 0 评论 -
LC146 longest-substring-without-repeating-character
public static int lengthOfLongestSubstring(String s) { // write code here int maxSize = 0; char[] characters = s.toCharArray(); List<Character> list1 = new ArrayList<>(); List<Character> list2 = n..原创 2020-08-02 18:42:55 · 113 阅读 · 0 评论 -
LC147 median-of-two-sorted-arrays
public static double findMedianSortedArrays(int[] A, int[] B) { // write code here List<Double> list = new ArrayList<>(); for (int i = 0; i < A.length + B.length; i++) { if (i < A.length) { list.add((doub..原创 2020-08-02 18:43:18 · 483 阅读 · 0 评论 -
LC148 two-sum
public static int[] twoSum (int[] numbers, int target) { // write code here label: for(int i=0;i<numbers.length-1;i++){ for (int j = i+1; j <numbers.length; j++) { if(target-numbers[j]==numbers[i]){ ..原创 2020-08-02 18:43:35 · 142 阅读 · 0 评论