
leetcode
程序员早早
这个作者很懒,什么都没留下…
展开
-
让我惊艳的回溯法解leetcode单词拆分
题目给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "applepenapple", wordDic原创 2020-06-25 17:16:53 · 282 阅读 · 0 评论 -
leetcode之进阶的回文数
题目判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为字符串来解决这个问题吗?来源:力扣(LeetCode)链接:https://leetc原创 2020-06-10 09:34:13 · 221 阅读 · 0 评论 -
回溯算法解leetcode全排列问题
题目给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/permutations著作权归领扣网络所有。商业...原创 2020-04-25 21:09:59 · 301 阅读 · 0 评论 -
递归思想解决leetcode之鸡蛋掉落
题目你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X...原创 2020-04-11 12:41:53 · 592 阅读 · 0 评论 -
再战DFS,leetcode括号生成
题目数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]来源:力扣(LeetCode)链接:https://leetcode-cn....原创 2020-04-10 10:31:26 · 162 阅读 · 0 评论 -
golang的字符串解决leetcode翻转字符串里的单词
题目给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入: "a good example"输出: "...原创 2020-04-10 09:28:09 · 946 阅读 · 0 评论 -
DFS搞定leetcode机器人的运动范围
题目地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到...原创 2020-04-08 11:23:31 · 184 阅读 · 0 评论 -
翻滚吧,leetcode之旋转矩阵
题目给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]]示例 2:给定 matrix ...原创 2020-04-07 09:26:29 · 426 阅读 · 0 评论 -
动态规划直通车之leetcode编辑距离
题目给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入:word1 = "horse", word2 = "ros"输出:3解释:horse -> rorse (将 'h' 替换为 'r')rorse -> rose (删...原创 2020-04-06 10:11:56 · 235 阅读 · 0 评论 -
考考你的基本功,leetcode最不经常使用缓存LFU你会吗?
题目设计并实现最不经常使用(LFU)缓存的数据结构。它应该支持以下操作:get 和 put。get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1。put(key, value) - 如果键不存在,请设置或插入值。当缓存达到其容量时,它应该在插入新项目之前,使最不经常使用的项目无效。在此问题中,当存在平局(即两个或更多个键具有相同使用频率)时,最近最少使用的键将被...原创 2020-04-05 11:56:51 · 173 阅读 · 0 评论 -
巧解leetcode数组中重复的数字
题目找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 限制:2 <= n <= 100000来源:力扣(LeetCode)链接:h...原创 2020-04-05 11:38:03 · 828 阅读 · 0 评论 -
这个花了我一天的位运算的王冠「八皇后问题」是个什么鬼?
八皇后问题其实是个在8*8的棋盘上摆放8个皇后的游戏,要求每个皇后都不同行,不同列,不在对角线上。然而涉及到棋之类的问题总是很复杂,想想alphago扬名立万的围棋就知道,下棋难着呢。尽管开篇我们就知道可以用位运算来解决啊,但是这就带来了另一座大山,啥是位运算?题目设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线上。这里的“对角线”指的是...原创 2020-04-04 22:27:47 · 284 阅读 · 0 评论 -
leetcode之困难的接雨水
题目给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6来源:力扣(LeetCode)链接...原创 2020-04-04 21:09:18 · 215 阅读 · 0 评论 -
leetcode之令人头大的有限状态自动机
传说中的有限状态自动机今日打卡一题是leetcode 8. 字符串转换整数 (atoi)。但从题目看来,感觉挺简单呀,这不就是语言里面会自带的atoi函数吗?跟传说中编译原理中的自动机有什么关系,做题要不要这么博学。其实由于将字符串转换成整数的时候限制条件有很多个,流程复杂。所以使用有限状态自动机可以梳理开始和结束,中间各种条件转换和状态变化,进行流程控制,覆盖整个功能。题目请你来实现一个...原创 2020-04-03 18:06:15 · 1371 阅读 · 0 评论 -
一题三解搞懂leetcode生命游戏
题目根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活...原创 2020-04-03 15:23:02 · 500 阅读 · 0 评论 -
leetcode完美数之聪明反被聪明误
在帖子里学到了完美数的投机做法,没想到运行结果如下,常规法竟然更优秀。你品,你细品。这难道不是在告诉我们学习没有捷径么。题目对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。给定一个 整数 n, 如果他是完美数,返回 True,否则返回 False示例:输入: 28输出: True解释: 28 = 1 + 2 + 4 + 7 + 14提示:输...原创 2020-04-02 17:48:31 · 346 阅读 · 0 评论 -
leetcode之玩转有效括号题系列
今天的leetcode每日一题是1111. 有效括号的嵌套深度。不用看题目,只看标题我们就能拆出几个问题来。1 什么是有效括号?2 有效括号如何嵌套?而括号类题目大部分同学可能在学习栈这一数据结构的时候做过。本文就来按照拆出来的两个问题,系列解读括号题。有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须...原创 2020-04-01 15:45:48 · 278 阅读 · 0 评论 -
leetcode之约瑟夫环问题,妙哉公式法
约瑟夫环问题约瑟夫环问题是N个人围成一圈,从第一个人开始报数,报到m的人出圈,剩下的人继续从1开始报数,报到m的人出圈;如此往复,直到最后只剩下1个人。而今天的leetcode面试题62. 圆圈中最后剩下的数字正是约瑟夫环问题,题目如下。思路一:循环链表法在我们学习基础的数据结构时,循环链表可谓是专为约瑟夫环问题而生,其实这是该问题的暴力法版本,我们用一个循环链表存储题目中的N个人,然后开始...原创 2020-03-30 11:42:49 · 2234 阅读 · 0 评论 -
leetcode卡牌分组考的竟然是--最大公约数
题目给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入:[1,...原创 2020-03-27 15:02:26 · 308 阅读 · 1 评论 -
leetcode朴实无算法之车的可用量
题目在一个 8 x 8 的棋盘上,有一个白色车(rook)。也可能有空方块,白色的象(bishop)和黑色的卒(pawn)。它们分别以字符 “R”,“.”,“B” 和 “p” 给出。大写字符表示白棋,小写字符表示黑棋。车按国际象棋中的规则移动:它选择四个基本方向中的一个(北,东,西和南),然后朝那个方向移动,直到它选择停止、到达棋盘的边缘或移动到同一方格来捕获该方格上颜色相反的卒。另外,车不能...原创 2020-03-26 10:19:45 · 125 阅读 · 0 评论 -
leetcode动态规划之按摩师,打家劫舍系列
func massage(nums []int) int { if len(nums)==0 { return 0 } dp0,dp1 := 0,nums[0] for i:=1;i<len(nums);i++ { var tdp0 int var tdp1 int if dp0>dp1 ...原创 2020-03-24 09:44:39 · 1089 阅读 · 0 评论 -
leetcode之简单单链表876. 链表的中间结点
题目给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.nex...原创 2020-03-23 09:38:53 · 158 阅读 · 0 评论 -
leetcode409. 最长回文串
题目给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。注意:假设字符串的长度不会超过 1010。示例 1:输入:"abccccdd"输出:7解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。思路因为是回文字符串,所以里面出现的字符都是偶数个,比如...原创 2020-03-19 16:12:06 · 146 阅读 · 0 评论 -
leetcode之字符串踩坑练习1160. 拼写单词
题目给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。注意:每次拼写时,chars 中的每个字母都只能用一次。返回词汇表 words 中你掌握的所有单词的 长度之和。示例 1:输入:words = ["cat","bt","h...原创 2020-03-17 10:33:51 · 232 阅读 · 0 评论 -
leetcode之一题学会Golang字符串怎么用
题目面试题 01.06. 字符串压缩字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1: 输入:"aabcccccaaa" 输出:"a2b1c5a3"示例2: 输入:"abbccd" 输出:"...原创 2020-03-16 10:21:30 · 309 阅读 · 0 评论 -
leetcode之不能再简单的深度优先搜索695. 岛屿的最大面积
题目给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为0。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0], [0,0,0,0,0,0,0,1,1,1,0,0,0], [0,1...原创 2020-03-15 10:04:44 · 185 阅读 · 0 评论 -
leetcode一题打尽动态规划和贪心算法之300. 最长上升子序列
动态规划和贪心算法的知识点动态规划的核心思想是把原问题分解成子问题进行求解,也就是分治的思想。贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。题目给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的...原创 2020-03-14 17:57:47 · 307 阅读 · 0 评论 -
leetcode练习之数组169. 多数元素
题目给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/majo...原创 2020-03-13 21:22:29 · 163 阅读 · 0 评论 -
leetcode练习之数组33.搜索旋转排序数组
题目假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], t...原创 2020-03-12 17:31:58 · 166 阅读 · 0 评论 -
leetcode练习之数组31. 下一个排列
leetcode练习之数组31. 下一个排列题目题目解读答题思路暴力法一遍扫描法PHP版本Go版本思考总结题目实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23...原创 2020-03-11 17:33:19 · 216 阅读 · 0 评论