刷题日常
Ranolar
学无止境
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
968题:监控二叉树(hard)
给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。https://leetcode-cn.com/problems/binary-tree-cameras/节点有三种状态。递归从叶子节点开始处理。//来自garrybest的答案class Solution { private int ans = 0; public int minCameraCover(TreeNode r.原创 2020-09-22 15:24:58 · 293 阅读 · 0 评论 -
74题:搜索二维矩阵
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-a-2d-matrix著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。class Solution { public static boolean searchMatrix(int[][].原创 2020-08-09 13:44:45 · 196 阅读 · 0 评论 -
50题:Pow(x, n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数。https://leetcode-cn.com/problems/powx-n/-100.0 < x < 100.0n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。折半计算,和29题类似。有个测试用例为-2147483648,恰好为−231,直接符号反转会导致溢出,因此先减少数值再做符号反转。class Solution { public double myPow(double x, i.原创 2020-08-06 22:09:37 · 415 阅读 · 0 评论 -
29题:两数相除
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。被除数和除数均为 32 位有符号整数。除数不为 0。假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。本题中,如果除法结果溢出,则返回 2^31 − 1。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/divide-.原创 2020-08-01 23:43:23 · 229 阅读 · 0 评论 -
28题:实现 strStr() (从结果看KMP)
https://leetcode-cn.com/problems/implement-strstr/func strStr(haystack string, needle string) int { n:=len(haystack) m:=len(needle) if m == 0{ return 0 } if n < m{ return -1 } next, q := getNext(needle), 0 .原创 2020-07-30 13:39:40 · 189 阅读 · 0 评论 -
991题:坏了的计算器
在显示着数字的坏计算器上,我们可以执行以下两种操作:双倍(Double):将显示屏上的数字乘 2;递减(Decrement):将显示屏上的数字减 1 。最初,计算器显示数字 X。返回显示数字 Y 所需的最小操作数。来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/broken-calculator著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。func brokenCalc(X int, Y int) int { .原创 2020-07-29 01:14:30 · 391 阅读 · 0 评论 -
64题:最小路径和(基础动态规划)
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。地址:https://leetcode-cn.com/problems/minimum-path-sum/最开始使用递归寻找子问题的解,提交超时。然后老老实实写了迭代,用数组存放子问题的结果以免重复计算。func minPathSum(grid [][]int) int { min := func(a, b int) int { if a < b.原创 2020-07-27 03:13:11 · 231 阅读 · 0 评论 -
94题:二叉树的中序遍历
递归func inorderTraversal(root *TreeNode) []int { return inorderRecursive(root)}func inorderRecursive(root *TreeNode) []int { if root == nil { return []int{} } rest := append(inorderRecursive(root.Left), root.Val) rest = append(rest, inorderRecurs原创 2020-07-23 15:58:46 · 213 阅读 · 0 评论 -
34题:在排序数组中查找元素的第一个和最后一个位置(go)
题目链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/题解链接:https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array/solution/qiao-yong-gohan-shu-zi-mian-liang-er-fen-cha-zhao-/来源:力扣.原创 2020-07-22 13:56:13 · 315 阅读 · 0 评论 -
20题:有效的括号(golang)
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-parentheses著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。func isValid(s string) bool { var stk.原创 2020-07-22 11:34:47 · 268 阅读 · 0 评论 -
24题:两两交换链表中的节点(迭代)
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.力扣:https://leetcode-cn.com/problems/swap-nodes-in-pairs/做这道题让我懂得了,前置指针的手很长,可以比后面的指针干更多的事。所以评论区里就出现了只用一个前置指针做题的老哥,但是对我来说太费脑子,可读性不强。以下是我的.原创 2020-06-28 20:37:48 · 256 阅读 · 0 评论 -
1030题:距离顺序排列矩阵单元格(桶排序)
给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2)之间的距离是曼哈顿距离,|r1 - r2| + |c1 - c2|。(你可以按任何满足此条件的顺序返回答案。)来源:力扣(LeetCode)链接:htt.原创 2020-06-26 21:55:53 · 214 阅读 · 0 评论 -
17题:电话号码的字母组合(Golang)
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/思路是构建一棵树或者DFS。我假想了树的形式,预先申请了叶子节点数量的字符串数组,然后构建下标表达式,将结果放到相应的位置。可惜做题的时候跳了好多个坑,干的活又累又久:range遍历方法返回的第二个值,就仅仅是.原创 2020-06-26 10:09:09 · 615 阅读 · 0 评论 -
2题:链表形式的两数相加(Golang)
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:————————————————输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807//来源:力扣(LeetCode.原创 2020-06-24 01:01:31 · 539 阅读 · 0 评论 -
11题:盛最多水的容器O(n)
给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。//说明:你不能倾斜容器,且 n 的值至少为 2。//来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/container-with-most-water著作权归领扣网络所有。商业转载请联系官方授权.原创 2020-06-23 23:38:37 · 207 阅读 · 0 评论 -
1题:两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。这道题原理是 根据遍历当前值使用哈希查找目标值的下标 。在有“元素不能使用两遍”限制的情况下,可以通过创建Map[in.原创 2020-06-23 00:42:59 · 229 阅读 · 0 评论
分享