leetcode
xindoo
10年技术博主,博客专家,曾就职于阿里 小米,目前任贝壳资深工程师。拥有运维、搜索广告、后端业务相关工作经验,擅长Java、Lniux、Redis……
展开
-
Leetcode Binary Tree Postorder Traversal(面试题推荐)
非递归遍历二叉树,肯定得用到栈。先序遍历很好写,但后续遍历就不是那么容易了。 只需要设置个指针pre,指向最后输出的那个节点就行了,只要判断cur指针指向的是上次输出节点的父节点,且cur无其他未遍历的节点,这个时候就把cur节点输出即可,然后更改pre。原理是要遍历当前节点,其所有子节点都必须遍历完,因为肯定是先左后右,所以只需一个指针保持前一次输出的结果即可。原创 2014-08-02 08:40:53 · 1881 阅读 · 0 评论 -
Leetcode 62. Unique Paths & 63. Unique Paths II
好久没刷题了,今天来俩道简单题。 Leetcode 62. Unique Paths Leetcode 63. Unique Paths IIA robot is located at the top-left corner of a m x n grid (marked ‘Start’ in the diagram below). The robot can only move either原创 2017-02-25 15:31:35 · 1502 阅读 · 0 评论 -
Leetcode 365. Water and Jug Problem
Water and Jug ProblemYou are given two jugs with capacities x and y litres. There is an infinite amount of water supply available. You need to determine whether it is possible to measure exactly z lit原创 2017-03-10 23:18:44 · 1589 阅读 · 0 评论 -
Leetcode 114. Flatten Binary Tree to Linked List
Leetcode 114. Flatten Binary Tree to Linked List 题目意思很简单,就是把一棵二叉数转换为链表,虽然题目中没说以什么样的形式转换,但看下样例就很容易看出来,是以先序遍历的次序转换成链表。这里链表节点还是treenode,只不过它的左节点为空而已。 思路也很简单,先把root的左子树(如有)变成单链表 leftlinkedlist,把roo原创 2017-04-01 23:43:12 · 1466 阅读 · 0 评论 -
Leetcode 582. Kill Process 题解
leetcode 582. Kill Process 好久没刷题,今天来一道比较简单的题目,如果此题作为一道面试题,可以延伸出树的遍历,栈和队列,hashmap,treemap等,还是比较能考验基础的面试题。原创 2017-05-21 21:08:13 · 3590 阅读 · 0 评论 -
Leetcode 623. Add One Row to Tree
题目链接:leetcode 623Given the root of a binary tree, then value v and depth d, you need to add a row of nodes with value v at the given depth d. The root node is at depth 1. 题目很简单,在树的第d层加一层,值为v。递归增加一层就好原创 2017-06-26 18:54:15 · 1856 阅读 · 0 评论 -
Leetcode 6.ZigZag Conversion
原题链接:6. ZigZag Conversion 题目名称『曲折变换』,但给的样例只有三行,看不出到底怎么样曲折变化,所以这里我再补充一个样例,大家肯定一下就懂了。 a i q y b h j p r x z c g k o s w d f l n t v e原创 2017-07-31 22:03:16 · 1308 阅读 · 0 评论 -
Leetcode 24.Swap Nodes in Pairs
题目链接 Leetcode 24. Swap Nodes in Pairs 给你一个链表,交换相邻两个节点,例如给你 1->2->3->4,输出2->1->4->3。 我代码里在head之前新增了一个节点newhead,其实是为了少写一些判断head的代码。 public class Solution { public ListNode swapPairs(ListNode hea原创 2017-07-31 21:43:32 · 1249 阅读 · 0 评论 -
Leetcode 19.Remove Nth Node From End of List
题目链接:19. Remove Nth Node From End of List 删除单链表中的倒数第n个节点,链表中删除节点很简单,但这道题你得先知道要删除哪个节点。在我的解法中,我先采用计数的方式来确定删除第几个节点。另外我在头节点之前额外加了一个节点,这样是为了把删除头节点的特殊情况转换为一般情况,代码如下。 public class Solution { public List原创 2017-07-31 22:16:36 · 1214 阅读 · 0 评论 -
Leetcode 4. Median of Two Sorted Arrays
题目链接 Leetcode 4. Median of Two Sorted Arrays 题目描述很简单,就是找到两个有序数组合并后的中位数,要求时间复杂度O(log (m+n))。 如果不要去时间复杂度,很容易就想到了归并排序,归并排序的时间复杂度是O(m+n),空间复杂度也是O(m+n),不满足题目要求,其实我开始也不知道怎么做,后来看了别人的博客才知道有个二分法求两个有序数组中第原创 2017-10-31 20:26:39 · 1222 阅读 · 0 评论 -
Leetcode 236. Lowest Common Ancestor of a Binary Tree
题目链接 236. Lowest Common Ancestor of a Binary Tree 根据LCA的定义,二叉树中最小公共祖先就是两个节点p和q最近的共同祖先节点,LCA的定义没什么好解释的,主要是这道题的解法。 我们要找p和q的最小公共节点,我开始想到的方法是先找出root分别到p和q的路径,既然路径都知道了,就从两条路径的末尾倒着往前来,第一个共同节点就是LCA,但其实原创 2017-11-19 20:57:36 · 1190 阅读 · 0 评论 -
Leetcode 295. Find Median from Data Stream
题目链接295. Find Median from Data Stream 在一个有序数组中找中位数,但需要支持再数组中添加新的元素。本来是有序里的,可以很轻易就查到中位数,但如果添加新数字后,不一定有序。如果先对数组排序,那代价就比较大了,每次排序时间复杂度O(n*log(n)),看discuss发现了一种很巧妙的解法,可以把添加数据的时间复杂度降低到O(log(n)) ,查询中位...原创 2018-02-21 22:18:30 · 1632 阅读 · 0 评论 -
Leetcode contests 93 题解
868. Binary Gap 简单题,就是求一个数字二进制形式中两个1的最大间隔位置,比如22的二进制0b10110,最大距离就是2,0b100001,最大距离是5。class Solution { public int binaryGap(int N) { String bs = Integer.toBinaryString(N); int...原创 2018-07-15 11:33:11 · 1383 阅读 · 0 评论 -
Leetcode 467. Unique Substrings in Wraparound String
题目链接:Unique Substrings in Wraparound String Consider the string s to be the infinite wraparound string of “abcdefghijklmnopqrstuvwxyz”, so s will look like this: “…zabcdefghijklmnopqrstuvwxyzabcdefghi原创 2016-12-10 19:22:18 · 1605 阅读 · 0 评论 -
Leetcode 368. Largest Divisible Subset思路及详解
题目链接:368. Largest Divisible SubsetGiven a set of distinct positive integers, find the largest subset such that every pair (Si, Sj) of elements in this subset satisfies: Si % Sj = 0 or Sj % Si = 0. If原创 2016-11-05 17:58:18 · 2126 阅读 · 0 评论 -
Leetcode 53.Maximum Subarray
题目链接:53.Maximum Subarray Find the contiguous subarray within an array (containing at least one number) which has the largest sum. For example, given the array [−2,1,−3,4,−1,2,1,−5,4],the contiguous原创 2016-08-07 16:41:09 · 1455 阅读 · 0 评论 -
Leetcode Minimum Depth of Binary Tree (面试题推荐)
计算树的最小深度 很简单的yidao原创 2014-10-18 10:43:09 · 1963 阅读 · 1 评论 -
Leetcode Find Minimum in Rotated Sorted Array 题解
Leetcode Find Minimum in Rotated Sorted Array题目大意,对一个有序数组翻转, 就是随机取前K个数,移动到数组的后面,然后让你找出最小的那个数,注意,K有可能是0,也就是没有翻转。毫无疑问,遍历一次肯定可以找到,但这样时间复杂度是O(n),如果你在面试的时候遇到这样的问题,你这样回答面试官肯定不会满意的,我们接下来讨论有没有什么更快的方法。O(nl原创 2014-10-22 09:08:28 · 2229 阅读 · 0 评论 -
Leetcode 230. Kth Smallest Element in a BST
Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. 求一个二叉搜索树的第k小值。 题目链接:https://leetcode.com/problems/kth-smallest-element-in-a-bst/ 先来看下二叉搜索树的性质,对于任原创 2016-06-25 08:22:47 · 1314 阅读 · 0 评论 -
Leetcode 3. Longest Substring Without Repeating Characters
此题题意是找出一个不包含相同字母的最长子串,题目给出了两个例子来说明题意,但这两个例子具有误导性,让你误以为字符串中只有小写字母。还好我是心机boy,我把大写字母的情况也给考虑进去了,不过。。。。字符串里竟然有特殊字符,于是贡献了一次wrong answer,这次我把ascii字符表都考虑进去原创 2016-06-12 19:45:05 · 1240 阅读 · 0 评论 -
Leetcode 198. House Robber
原题链接:198. House Robber 一句话理解题意,有个偷马贼晚上要偷尽可能值钱的马,但连续两头马被偷会触发报警,问他如何在不触发报警(不偷连续的两匹马)的情况下偷到总价值最高马,返回最高总价值。 看到maximum,就应该想到这是应该求解最优的问题,一想到求解最优,一般除了暴力就是动态规划了。 我们先来看看暴力解法,此题暴力还是比较复杂的,枚举每个位置的马偷或者不偷,原创 2016-06-12 19:50:58 · 1317 阅读 · 0 评论 -
Leetcode 74. Search a 2D Matrix
题目链接:Search a 2D MatrixWrite an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: * Integers in each row are sorted from left to right. * Th原创 2016-07-10 08:28:11 · 1302 阅读 · 0 评论 -
Leetcode 240. Search a 2D Matrix II
题目链接:Search a 2D Matrix II Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties: Integers in each row are sorted in ascending from left原创 2016-07-10 08:45:04 · 1225 阅读 · 0 评论 -
Leetcode 347.Top K Frequent Elements
Given a non-empty array of integers, return the k most frequent elements. 题目链接:Top K Frequent Elements 一句话理解题意:输出数组中出现次数对多的k个数。 在如果用C语言来写这个题目,思路就是先按数的大小排序,然后再用一个结构体数组保存每个数的出现次次数。 因为数组已经有序了,所原创 2016-06-14 12:28:03 · 1350 阅读 · 0 评论 -
Leetcode 11. Container With Most Water
Leetcode 11. Container With Most Water 题解原创 2016-06-14 18:44:08 · 1354 阅读 · 0 评论 -
Leetcode 313. Super Ugly Number
leetcode超级丑数思路及代码,时间复杂度O(n*k)原创 2016-06-19 19:53:10 · 1623 阅读 · 0 评论 -
Leetcode 377. Combination Sum IV
题目链接:Combination Sum IVGiven an integer array with all positive numbers and no duplicates, find the number of possible combinations that add up to a positive integer target. 赤裸裸的完全背包,属于动态规划的范畴,大家有原创 2016-07-27 20:44:39 · 1964 阅读 · 0 评论 -
Leetcode 372. Super Pow
题目链接:Super Pow Your task is to calculate ab mod 1337 where a is a positive integer and b is an extremely large positive integer given in the form of an array. 简短的题目,让你求(a^b)%1337的值,但b是以数组的形式给出的,这就原创 2016-08-06 16:11:02 · 1442 阅读 · 0 评论 -
Leetcode contests 95 题解
876. Middle of the Linked List 简单题,我的做法是先数下个数,然后知道中间节点是第几个了。 class Solution { public ListNode middleNode(ListNode head) { ListNode p = head; int cnt = 0; while (p !=...原创 2018-07-29 12:56:59 · 1361 阅读 · 0 评论