
Leetcode
文章平均质量分 61
忧伤的肚腩
华中科技大学计算机专业在读
展开
-
树+ 动态规划
树+ 动态规划这种结局思路主要是 利用一个全局变量,然后加一个递归方法,递归方法求解初当前节点处满足题意的最大值情况,然后当前节点能够满足的最大值与目前得到的最大值做一个比较全局变量 Max调用递归方法调用递归左右节点的情况更新最大值的情况return 返回当前节点满足的情况路径最大和 124. Binary Tree Maximum Path Sumclass Solutio...原创 2019-06-16 13:42:48 · 424 阅读 · 0 评论 -
387. First Unique Character in a String
暴力解法两个循环hashmap + 两个循环public int solution_1(String s){ if(s==null || s.length()==0){ return -1; } Map<Character, Integer> record = new HashMap<>(); ...原创 2018-12-06 10:07:31 · 204 阅读 · 0 评论 -
103. Binary Tree Zigzag Level Order Traversal
描述主要是层次遍历相关的事情之字形打印二叉树的基本情况首先从左走到右,接下来一层从右走到左的基本情况关于这到题目也可以查看下102 层次遍历并保存每层的结果构成一个collectons102. Binary Tree Level Order Traversal层次遍历 BFS队列中的元素个数其实就是每层节点中的个数, 在while(循环体操作之前我们是可以)层次遍历中, 利用每层...原创 2018-12-08 11:13:24 · 147 阅读 · 0 评论 -
34. Find First and Last Position of Element in Sorted Array
描述iven an array of integers nums sorted in ascending order, find the starting and ending position of a given target value.Your algorithm’s runtime complexity must be in the order of O(log n).If the...原创 2018-11-25 16:10:02 · 304 阅读 · 0 评论 -
295. Find Median from Data Stream
题目描述如何求数据流的中位数情况,这个数据流可以随时添加数据,此题要找出数据流的中位数,数据流由无序整数组成,并且数据流是在变化的。数据流顺序是无序的,添加的顺序也是无序,但是求解是中位数的话就要保持有序的状态,所以基本Median is the middle value in an ordered integer list. If the size of the list is even,...原创 2018-11-25 21:28:01 · 182 阅读 · 0 评论 -
合并两棵二叉树
还是使用原创 2018-11-24 14:35:50 · 669 阅读 · 0 评论 -
493. Reverse Pairs
主要是归并排序中的关键思想情况如何设计归并排序merger(int []nums, int lstart, int lend, int rstart, int rend){注意lstart 到lend 是有序的情况 , rstart 到rend 也是有序的情况}如果 lstart 大于 rstart的话,那么lstart 到lend 都是要比rstart 大的数,(在这个时候进行统计计数...原创 2018-11-24 13:08:18 · 245 阅读 · 0 评论 -
81. Search in Rotated Sorted Array II
31 Search in Rotated Sorted Array ll描述不包含相同的元素情况Input: nums = [4,5,6,7,0,1,2], target = 0Output: 4对有序数组进行一定的旋转,进行查找二分查找and双指针这是二分查找的变体,双指针的形式,low = 0, high = length-1;mid 中间分为两个部分形式nums[mid...原创 2018-11-08 20:36:57 · 255 阅读 · 0 评论 -
114. Flatten Binary Tree to Linked List
114. Flatten Binary Tree to Linked List还是分为三部分的情况,假设分为root, root.left, root.right,假设这两边都是有序的情况,就是类似与于交换进行值即可的情况Efficient Without Additional Data StructureRecursively look for the node with no gran...原创 2018-11-11 21:41:58 · 289 阅读 · 0 评论 -
链表的公共节点
求链表的公共节点160. Intersection of Two Linked Lists先求出链表的长度, 让两个链表的长度一样的情况,然后逐步推进, 不等的话一直走下去, 直到走到相同的地方情况下如果没有公共公共节点的话,两个节点共同走到空节点,然后直接返回即可/** * Definition for singly-linked list. * struct ListNode ...原创 2018-10-20 16:15:13 · 209 阅读 · 0 评论 -
回文链表和链表reverse()
链接判断一个链表是否是回文字符串?快慢指针链表reverse考虑是偶数链表还是reverse以后都构造不包含头节点都结果链表其实跟我以前都思路是一样的想法,同样是采用头插入法和分开两个链表的做法情况public void reverse(ListNode head){ ListNode pre =null; while(head!=null){ ...原创 2018-10-22 20:05:44 · 198 阅读 · 0 评论 -
230. Kth Smallest Element in a BST
查找二叉搜索树的第K小节点利用bst的中序遍历的性质bst 中序遍历可以得到一个有序数组, 每次从stack中弹出一个元素,看k-- ,进行计数即可Inorder TraversalWe can inorder traverse the tree and get the kth smallest element. Time is O(n).solution1 中序遍历非递归写法/**...原创 2018-10-17 15:19:27 · 235 阅读 · 0 评论 -
226. Invert Binary Tree
反转二叉树4/ 2 7/ \ / 1 3 6 9Output:4/ 7 2/ \ / 9 6 3对左右进行一个反转情况递归做法还是套路做法对左边节点进行函数操作对右边节点进行函数操作swap 对调做法, root.left , root.rightclass Solution { public TreeNo...原创 2018-12-06 17:08:12 · 142 阅读 · 0 评论 -
138. Copy List with Random Pointer
@[目录基本结构]((这里写自定义目录标题)描述复杂链表的复制, 首先理解什么叫做复杂链表, 复杂链表就是每个节点有两个指针, 一个指正是指向后面节点的, 另一个指针是指向链表当中任意一个节点的clone /copy a linked list with next and random pointersA linked list is given such that each node ...原创 2018-12-10 21:52:59 · 259 阅读 · 0 评论 -
使用队列实现stack
两个队列实现一个stackq1只保持一个元素即可, 多余的转换到q2当中出队列元素,有两种情况,q1不为空, 直接出队列如果连续出队列 q1可能为空, 需要q2的部分元素放到q1当中去,说白了就是元素捣鼓来捣鼓去的问题即可核心事项将一个筒里面的元素捣鼓来捣鼓去一个队列实现一个stack没加入一个元素都是捣鼓捣鼓去就行,重置元素的基础顺序即可...原创 2019-05-23 16:45:10 · 357 阅读 · 0 评论 -
Leetcode 340 最长最多K个无重复字符的字符串长度
题目Given a string, find the length of the longest substring T that contains at most k distinct characters.For example, Given s = “eceba” and k = 2,T is “ece” which its length is 3.快慢指针 + HashMap一...原创 2019-05-02 15:54:45 · 1608 阅读 · 0 评论 -
59. 螺旋打印情况
i 代表一圈,j 从用来上下左右移动,主要是控制 i 与j 的参数关系就ok了 ,另一个是注意如何初始化从左上角到右上角while(j<n-i-1)从右上角到右下角while(j<n-i-1)从右下角到左下角while(j>i)从左下角到左上角while(j>i)class Solution { public int[][] ...原创 2019-03-24 20:20:18 · 169 阅读 · 0 评论 -
数组当中的第K大元素
一个没有排序数组当中的第K大元素,堆选择排序优化的选择排序class Solution { public int findKthLargest(int[] nums, int k) { if (nums == null || nums.length == 0 || k <= 0 || k > nums.length) { re...原创 2019-03-03 16:49:13 · 169 阅读 · 0 评论 -
HashMap
自己设计一个HashMap采用桶+ 链地址法来实现一个HashMap,设计链表类设计桶类 ,包括一个头节点,head = new ListNode(-1,-1);hashmap , 桶类数组情况 ,ListNode[] buckets = new ListNode[], 基础数目就可以了,桶数组class ListNode { ListNode next; i...原创 2019-02-17 13:40:32 · 155 阅读 · 0 评论 -
字典序排序
主要是关于LeetCode当中的字典序排序问题386 Lexicographical Numbers440 字典序的第K小数字524 通过删除字母匹配到字典里面最长单词361 去除重复字母使得剩下的字典排序最小的情况386 字典序排序算法Given an integer n, return 1 - n in lexicographical order.For example, g...原创 2019-01-30 16:41:01 · 5426 阅读 · 0 评论 -
225.使用队列来模拟stack
题目解读使用两个队列来模拟stack 的push、pop()、 top(), isEmpty() 这些基础东西面试过程当中也是主要1.push()2.pop()3. top()4. isEmpty()面试的话主要实现上述几个接口就行了注意在java 队列当中是没有top()方法的,只有peek(),poll()在栈stack 当中才有那中top()队列的api 为poll(),...原创 2019-01-21 21:56:38 · 160 阅读 · 0 评论 -
239.最大滑动窗口
滑动窗口当中的最大值暴力解法扫描正个数组,O(n), 每个节点处需要进行扫描k个节点,所有时间复杂度为O(nk),class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if(k>nums.length) return new int[0]; ...原创 2019-01-21 13:19:49 · 254 阅读 · 0 评论 -
54. Spiral Matrix
顺时针打印矩阵主要是通过不断缩小矩阵的范围,抽象出来即可在开始只要每次缩短这个范围即可,主要是后连执行两边后的条件判断public class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> res = new ArrayList<I...原创 2018-12-30 16:54:25 · 141 阅读 · 0 评论 -
108. Convert Sorted Array to Binary Search Tree
题目将有序数组转换成为转换为平衡二叉排序树,利用二分法的基本情况例如下面这种基本情况解题主要是利用二分法,划分元素基本情况 ,在这里二分法要特别注意一个情况就是,如何判断low和high 的问题即可, 单独一个元素也是可以作为一个节点的, 所有low = high 才是最终的循环判断终止条件情况不用考虑大小问题,主要是有序数组, 平衡二叉搜索树中序遍历其实就是一个中序数组,还是c...原创 2018-12-22 00:14:41 · 172 阅读 · 0 评论 -
200. Number of Islands
求岛屿的数量求岛屿的数目情况主要有两种情况解析这道题目的本质问题其实是想就求,不相连的1 的块数目情况,在查找的过程当中, 相邻的1是当做只有一块的基本情况, 要去何必周边的1,情况, 就是标记为是岛屿就行了这种情况下,就是利用一个一直回溯下去的思想, 向四周进行一个基本的扩展就行了。public class Solution {private int n;private int...原创 2018-12-21 23:18:02 · 314 阅读 · 0 评论 -
55. Jump Game
贪心算法Jump Game IGiven an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position....原创 2018-10-15 23:47:16 · 160 阅读 · 0 评论 -
二叉树镜像
101. Symmetric Treesame tree这道题目可以使用same tree的解法来做判断两颗树是否相同,从根节点开始判断,然后两两比较两个树的左右孩子节点public boolean isSameTree(TreeNode p, TreeNode q) { if(p==null && q==null){ return true; ...翻译 2018-09-29 20:47:24 · 363 阅读 · 0 评论 -
Leetcode:264. Ugly Number II
描述Write a program to find the n-th ugly number.Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. Example:Input: n = 10 Output: 12 Explanation: 1, 2, 3, 4, 5, 6, 8, ...原创 2018-09-08 16:03:18 · 145 阅读 · 0 评论 -
Leetcode(236,112) :有关树的一些操作(递归、动态、遍历,搜索)
题目描述查找二叉树的两个节点的最小公共祖先二叉搜索树,利用二叉搜索树的性质, 左子树和右子树的节点大小关系(递归处理) 无非是两种情况,第一中两个子节点不再同一颗树上,那么最小的公共节点就是两者的根节点,然后采用递归处理方式处理两边节点情况 递归版本public TreeNode lcs(TreeNode root, TreeNode p, TreeNode q){ ...原创 2018-09-11 16:47:21 · 481 阅读 · 0 评论 -
Leetcode 123. Best Time to Buy and Sell Stock III
题目分析最多只能买卖两次,发生两次交易行为,求最大利润# III是这三题中最难的。允许两次买卖,但同一时间只允许持有一支股票。也就意味着这两次买卖在时间跨度上不能有重叠(当然第一次的卖出时间和第二次的买入时间可以是同一天)。既然不能有重叠可以将整个序列以任意坐标i为分割点,分割成两部分: prices[0:n-1] => prices[0:i] + prices[i...原创 2018-09-02 11:15:51 · 153 阅读 · 0 评论 -
Leetcode95. Unique Binary Search Trees II and I
分析这道题目采用二分法和递归方法·解决, 1&amp;lt;=i&amp;lt;=n, i代表root, [1,i-1] 为有节点 [i, n] 为右节点,然后左右两边又不断分治的方法解决 分而治之用于归并排序类似于这种方法就是 代码书写流程递归递归判断条件,递归的出口文件对原始问题进行处理,处理左边,处理右边合并两边结果从宏观上把握这种情况归并排序对算法: ...原创 2018-09-04 17:33:50 · 339 阅读 · 0 评论 -
Leetcode 121. Best Time to Buy and Sell Stock
题目描述一个一维数组代表着股票的价值,可以执行两个操作,一个是买操作,一个是卖操作,如何能让利润最大化, 说白了就是如何让差价最大话,在卖股票之前必须进行股票的购买操作,每个操作只最多只能执行一次。 Example 1:Input: [7,1,5,3,6,4] Output: 5 Explanation: Buy on day 2 (price = 1) and sell on d...原创 2018-08-24 14:52:38 · 109 阅读 · 0 评论 -
Leetcode 122:买卖股票二
题目描述https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/description/与第一次的题目相比,可以多次买卖等情况,只要求出最大利润即可, 可以将一次买卖分为过个过程即可; [1,2,3,4,5] 比如正常情况下是第一天买进,第五天卖出,但这个过程可以分解为多次买进卖出 在第一天买进,第二天卖出,获得利...原创 2018-08-31 14:57:59 · 165 阅读 · 0 评论 -
213. House Robber II
题目描述每个房子有一定的钱条件 不能偷相邻房子的钱条件 第一个房子和最后一个房子相邻,围成一个圆形,也就是不能同时偷第一个房子和最后一个房子的钱解题思路如果抢劫第一家,则不可以抢最后一家;否则,可以抢最后一家。因此,这个问题就转化成为了两趟动规,可以复用 “House Robber” 的代码。对第一个房子到倒数第二个房子进行动态规划, 对第二个房子到最后一个房子进行动...原创 2018-08-22 11:00:06 · 179 阅读 · 0 评论 -
Leetcode 79. Word Search
题目描述Given a 2D board and a word, find if the word exists in the grid.The word can be constructed from letters of sequentially adjacent cell, where “adjacent” cells are those horizontally or vertic...原创 2018-08-11 18:15:46 · 116 阅读 · 0 评论 -
Leetcode 33. Search in Rotated Sorted Array
题目描述将有序数组打乱,然后从中查找一个数据的下标 Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]).You are given a targ...原创 2018-07-31 20:41:08 · 140 阅读 · 0 评论 -
Leetcode 82. Remove Duplicates from Sorted List II
题目描述Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.Example 1:Input: 1->2->3->3->4->4->5 Output:...原创 2018-07-31 11:56:42 · 129 阅读 · 0 评论 -
树的四种遍历方式
树的中序遍历非递归思路使用stack替换掉递归while(两种情况) (1)一直走到树的最左边结点,把左边的结点全部压入stack, (2)走完左边的结点后,出stack, 继判断是否最左边的结点是否有右结点 如果有右结点,则对这个子树执行(1)中同样的操作,回到步骤一 2.出stack的同时访问结点代码(Java) // Def...原创 2018-07-29 11:48:55 · 21905 阅读 · 2 评论 -
Ugly Number II
丑数的定义: 因素分解后因子只包含2,3,5(由这三个数的组成,不一定要三个都用上,也可以使用多个相同的情况)的数 比如 10= 2*5, 给定一个数,找到第n个丑数比如输入10,找到第10个丑数, Input: n = 10 Output: 12 Explanation: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the ...原创 2018-09-07 15:09:41 · 107 阅读 · 0 评论 -
Leetcode98: Validate Binary Search Tree
二叉查找树二叉树层次遍历树的中序遍历基础知识,一个栈,while(没有走到最左边的节点 | | 栈不为空 ) 1.(还没有走到最左边的节点)最左边(该节点一定没有孩子节点了)不断入栈,直到把左边的元素全部压入栈 2.(栈不为空)弹出后再处理访问该元素,再访问(有可能有,也有可能没有元素)其右节点(对其右孩子节点继续执行步骤1), 弹出一个...原创 2018-09-07 18:37:16 · 131 阅读 · 0 评论