Leetcode (101~200)
文章平均质量分 69
zhangzhetaojj
努力学习,争取BAT!
展开
-
Leetcode 113. Path Sum II 路径总和 II
题目:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \...原创 2018-06-30 23:27:07 · 358 阅读 · 0 评论 -
LeetCode 145. Binary Tree Postorder Traversal 二叉树的后序遍历
题目:给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?代码实现:后序遍历的通用实现可以查看博客:二叉树遍历系列--后序遍历递归版本:class Solution { private List<Integer> p...原创 2018-06-15 01:24:00 · 234 阅读 · 0 评论 -
LeetCode 110. Balanced Binary Tree 平衡二叉树
// 使用层次遍历找出树的最小高度,然后判断是否为平衡树public boolean isBalanced(TreeNode root) { if (root == null) return true; int minHeight = -1, height = -1; boolean isUpdate = true; Stack<TreeNode> s...原创 2018-06-15 20:40:35 · 201 阅读 · 0 评论 -
Leetcode 172. Factorial Trailing Zeroes 阶乘后的零
题目:给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.说明: 你算法的时间复杂度应为 O(log n) 。解题思路:检测5出现的次数即可,如果n除以5等于m,说明n中有m的数可以被5整除。然后我们就可以用迭代的思路去更新n的值。时间复杂度O(l...原创 2018-06-26 19:53:34 · 149 阅读 · 0 评论 -
Leetcode 120. Triangle 三角形最小路径和
题目:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来解决这个问题,那么你的算法会很加分。解题思路:动态规划...原创 2018-06-24 18:27:34 · 330 阅读 · 0 评论 -
Leetcode 169. Majority Element 求众数
题目:给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2解题思路:遍历数组,如何下一个元素和当前元素相同,则计数加一,否则减一,为0时不计数。代码实现:...原创 2018-06-24 05:29:03 · 143 阅读 · 0 评论 -
LeetCode 191. Number of 1 Bits 位1的个数
题目:编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 :输入: 11输出: 3解释: 整数 11 的二进制表示为 00000000000000000000000000001011 示例 2:输入: 128输出: 1解释: 整数 128 的二进制表示为 00000000000000000000000010000000解题思路:对每...原创 2018-06-22 14:13:27 · 220 阅读 · 0 评论 -
LeetCode 173. Binary Search Tree Iterator 二叉搜索树迭代器
先上题:实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。调用 next() 将返回二叉搜索树中的下一个最小的数。注意: next() 和hasNext() 操作的时间复杂度是O(1),并使用 O(h) 内存,其中 h 是树的高度。题目提供的接口:/** * Definition for binary tree * public class TreeNode { * ...原创 2018-06-17 12:40:33 · 470 阅读 · 0 评论 -
Leetcode 122. Best Time to Buy and Sell Stock II 买卖股票的最佳时机 II
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得...原创 2018-06-27 20:32:33 · 115 阅读 · 0 评论 -
Leetcode 176. Second Highest Salary 第二高的薪水
题目:解题思路:代码实现:原创 2018-07-03 09:20:53 · 173 阅读 · 0 评论 -
Leetcode 103. Binary Tree Zigzag Level Order Traversal 二叉树的锯齿形层次遍历
题目:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]解题思路:参考Leetcode 102. Bi...原创 2018-06-24 07:46:25 · 336 阅读 · 0 评论 -
Leetcode 136. Single Number 只出现一次的数字
题目:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解题思路:使用异或运算每个元素,最后剩下的就是那个只出现一次的数。代码实现:class Solution { pub...原创 2018-06-28 07:13:44 · 205 阅读 · 0 评论 -
Leetcode 114. Flatten Binary Tree to Linked List 二叉树展开为链表
题目:给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6解题思路:数据访问顺序是前序遍历的,可以递归也可以迭代,使用右节点作为链表的next。时间复杂度O(...原创 2018-06-29 00:39:31 · 208 阅读 · 0 评论 -
LeetCode 144. Binary Tree Preorder Traversal 二叉树的前序遍历
题目:给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?代码实现:前序遍历的通用实现可以查看博客:二叉树遍历系列--前序遍历递归版本:/** * Definition for a binary tree node. * pub...原创 2018-06-14 23:06:46 · 217 阅读 · 0 评论 -
LeetCode 111. Minimum Depth of Binary Tree 二叉树的最小深度
题目:原创 2018-06-15 19:57:48 · 207 阅读 · 0 评论 -
Leetcode 174. Dungeon Game 地下城游戏
题目:一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房...原创 2018-07-09 11:25:35 · 851 阅读 · 0 评论 -
Leetcode 198. House Robber 打家劫舍
题目:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号...原创 2018-06-24 16:41:30 · 145 阅读 · 0 评论 -
Leetcode 112. Path Sum 路径总和
题目:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2018-06-24 09:10:46 · 209 阅读 · 0 评论 -
Leetcode 107. Binary Tree Level Order Traversal II 二叉树的层次遍历 II
题目:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]解题思路:参考Leetcode 102. Binary...原创 2018-06-24 07:35:56 · 142 阅读 · 0 评论 -
Leetcode 102. Binary Tree Level Order Traversal 二叉树的层次遍历
题目:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解题思路:使用队列实现树的层次遍历,相关博客:二叉树遍历系列--层次遍历代码实现:/**...原创 2018-06-24 07:05:21 · 202 阅读 · 0 评论 -
Leetcode 155. Min Stack 最小栈
题目:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);min...原创 2018-06-22 16:07:02 · 132 阅读 · 0 评论 -
Leetcode 200. Number of Islands 岛屿的个数
题目:给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3解题思路:对地图进行BFS搜索,计算岛屿的数量。如果直接...原创 2018-06-22 15:05:08 · 662 阅读 · 1 评论 -
Leetcode 121. Best Time to Buy and Sell Stock 买卖股票的最佳时机
题目:给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利...原创 2018-06-23 06:51:31 · 108 阅读 · 0 评论 -
Leetcode 189. Rotate Array 旋转数组
题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99] 和 k...原创 2018-06-22 14:27:18 · 200 阅读 · 0 评论 -
LeetCode 190. Reverse Bits 颠倒二进制位
题目:颠倒给定的 32 位无符号整数的二进制位。示例:输入: 43261596输出: 964176192解释: 43261596 的二进制表示形式为 00000010100101000001111010011100 , 返回 964176192,其二进制表示形式为 00111001011110000010100101000000 。进阶:如果多次调用这个函数,你将如何优化你的算法?解...原创 2018-06-22 14:04:36 · 1376 阅读 · 0 评论 -
LeetCode 101. Symmetric Tree 对称二叉树
题目:原创 2018-06-17 12:05:38 · 552 阅读 · 0 评论 -
LeetCode 104. Maximum Depth of Binary Tree 二叉树的最大深度
题目:两个stack的妙用原创 2018-06-15 22:43:16 · 125 阅读 · 0 评论 -
Leetcode 141. Linked List Cycle 环形链表
题目:给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题?解题思路:使用walker与runner策略,定义两个节点,一个是walker节点,一个是runner节点,walker节点每次只走一步,runner节点每次走两步,如果存在环,walker和runner一定会在某个时间点相遇,如果不存在环,runner会优先走到为null的节点。时间复杂度O(n + k),n为没有环的节...原创 2018-06-29 02:19:00 · 162 阅读 · 0 评论