- 博客(17)
- 收藏
- 关注
原创 leetcode第188场周赛20200510
文章目录1.用栈操作构建数组2.形成两个异或相等数组的三元组数目3.收集树上所有苹果的最少时间4.切披萨的方案数5.周赛成绩1.用栈操作构建数组思路:遍历list数组,判断当前值是否在目标数组target中?若在,则仅入栈;反之,入栈➕出栈。(分别对应在返回数组中添加“Push”或添加“Push”+“Pop”)。class Solution(object): def buildArray(self, target, n): """ :type target:
2020-05-13 16:03:51 320
原创 leetcode第181周赛
1.按既定顺序创建数组给你两个整数数组nums和index。你需要按照以下规则创建目标数组:目标数组target最初为空按从左到右的顺序依次读取nums[i]和index[i],在target数组中的下标index[I]处插入值nums[I]。重复上一步,直到在nums和index中都没有要读取的元素。请你返回目标数组。思路:直接用切片,找到插入位置,切割,插入;class So...
2020-03-22 21:46:14 194
原创 leetcode第180场周赛
1.矩阵中的幸运数2.设计一个支持增量操作的栈3.将二叉搜索树变平衡将所有节点排序,则中间节点为根,中间节点左侧区间为根的左子树,中间节点右侧区间为根的右子树。class Solution(object): def balanceBST(self, root): """ :type root: TreeNode :rtype: Tre...
2020-03-15 17:54:03 195
原创 leetcode每日一题(打卡篇)
文章目录4-11.鸡蛋掉落4-11.鸡蛋掉落思路:这道题主要分两部分,一个是写出转移方程,另一个是优化算法。只有一个鸡蛋的时候,只能从1层开始扔,一层一层扔才能保证得到F楼层。(如果从其他楼层开始扔, 如果碎了,那么无法确定F是在当前楼层还是低楼层。)有多个鸡蛋的时候,第一个鸡蛋可以从任意楼层扔(j楼);1)如果碎了,那么F楼层在比当前低的楼层中,鸡蛋个数减一,移动次数为当有k-1个...
2020-04-11 21:58:25 809
原创 leetcode每日一题(旋转矩阵)
旋转矩阵题目:给你一幅N*N矩阵表示的图像,其中每个像素的大小为4字节。请你设计一种算法,将图像旋转90度。不占用额外内存空间能否做到?思路:要做到原地转换,就是找到每个像素点旋转90度后到的位置。本质上,是以当前四个角的像素点为基础,将四个像素点交换位置;记左上角为A,右上为B,右下为C,左下为D:执行的操作为A->B->C->D->A;然后将A右移一位,...
2020-04-07 09:50:50 492
原创 leetcode第183周赛(石子游戏III)
石子游戏III题目:Alice和Bob用几堆石子在做游戏。几堆石子排成一行,每堆石子都对应一个得分,由数组stoneValue给出。Alice和Bob轮流取石子,Alice总是先开始。在每个玩家的回合中,该玩家可以拿走剩下石子中的前1、2或3堆石子。比赛一直持续到所有石子被拿走。每个玩家的最终得分为他所拿到的每堆石子的对应得分之和。每个玩家的初始分数都是0。比赛的目标是决出最高分,得分最高的...
2020-04-06 22:16:52 289
原创 回溯算法(递归+队列实现)
回溯算法回溯是一种试探算法,和暴力搜索法相比,根据每一步小心试探得到的情况进行评估,如果当前的情况已经无法满足要求,那么我们就没有必要继续进行下去,可以帮助我们避免走很多弯路。在回溯中,当出现非法的情况时,算法可以回退到之前的情景,可以是返回一步,有时候甚至可以返回多步,然后再去尝试别的路径和办法。 1.首先判断当前情况是否非法,如果非法就立即返回 2.看看当前情况是否已经满足递归结束条件...
2020-04-01 21:32:20 1107
原创 leetcode每日一题(21)365.水壶问题
水壶问题题目:有两个容量分别为x升和y升的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而得到恰好z升的水?如果可以,最后请用以上水壶中的一个或两个盛放取得的z升水。你允许:装满任意一个水壶清空任意一个水壶从一个水壶向另外一个水壶倒水,直到装满或者倒空深度优先搜索肯定是可以做的,主要是还要考虑是否出现重复状态,要考虑挺多;于是想找一种稳定的求解办法。思路: 1.首先...
2020-03-21 11:55:31 624
原创 937.重新排列日志文件(字符串专题)
字符串字符串是一个由unicode字符构成的数组,因此它和数组是比较相似的。可以执行几乎所有在数组中使用的操作。String作为最常见的编程语言类型之一,也是算法面试的考察重点之一。1.字符串相加题目:给定两个字符串形式的非负整数num1和num2,计算它们的和。思路:双指针 1.两个指针起始位置为两个字符串的末尾; 2.两个指针的值相加,存入到新字符串,同时向左移动两个指针;注意...
2020-03-21 08:47:50 276
原创 leetcode 42.接雨水和最小覆盖子串
1.最小覆盖子串题目:给你一个字符串s、一个字符串t,请在字符串s里面找出:包含t所有字母的最小子串。示例:输入:s = “ADOBECODEBANC”, t = “ABC”输出:“BANC”思路:滑动窗口即双指针,i=0,滑动右指针直到出现满足条件的子串。移动左指针,直到此时子串不包含t所有子串;回到第一步。当右指针移动到末尾时,停止;返回最短子串。如何判断是否满...
2020-03-18 21:28:48 138
原创 每日一题(17)1160.拼写单词
拼写单词给你一份【词汇表】(字符串数组)words和一张【字母表)(字符串)chars。假如你可以用chars中的【字母】(字符)拼写出words中的某个【单词】(字符串),那么就认为掌握了这个单词。注意:每次拼写时,chars中的每个字母都只能用一次。返回词汇表words中你掌握的所有单词的长度之和。思路:1.依次扫描整个词汇表,统计每个单词的每个字母的出现次数,与字母表中该字母出现...
2020-03-17 21:09:24 287 3
原创 别扭的一天
300. 最长上升子序列题目:给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入:[10,9,2,5,3,7,101,18]输出:4解释:最长的上升子序列是[2,3,7,101]。思路:动态规划dp[i]表示以当前元素结尾的子序列的最长长度。dp[i] = max(dp[j]) + 1 (nums[i] > nums[j])class Solution(obj...
2020-03-14 21:55:50 107
原创 力扣每日一题(13)多数元素 摩尔投票法
多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。本题用哈希表、排序都可以做,但是又学习到了一个好玩的方法,下面引用了知乎胡新辰的回答,简单易懂。摩尔投票法:核心就是对拼消耗。玩一个诸侯争霸的游戏,假设你方人口超过总人口一半以上,并且能保证每个人口出去干仗都能一对一同...
2020-03-13 11:49:56 209
原创 力扣每日一题(12)字符串的最大公因子(python)
字符串的最大公因子对于字符串 S 和 T,只有在 S = T + … + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。返回最长字符串 X,要求满足 X 能除尽 str1 且 X 能除尽 str2。这一题,刚开始看的时候其实挺懵的,想到的就是迭代,从短的字符串开始,挨个迭代看能不能成立。但是这样太慢了(笨重)。于是,换个思路,从长度入手,将str1和str2的长度...
2020-03-12 16:15:11 380
原创 leetcode面试题04.06 后继者 中序遍历和二叉搜索树特性(python版)
后继者题目:设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例1:方法一:本题所求后继者也就是该树中序遍历中p节点后面的节点。因此,可通过得到树的中序遍历得到p的后继者。通过递归中序遍历二叉树很简单,这里不再赘述。class Solution(object): def inorderSucce...
2020-03-12 15:59:36 327
原创 leetcode576.出界的路径数
出界的路径数题目:给定一个 m × n 的网格和一个球。球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上、下、左、右四个方向上移动使球穿过网格边界。但是,你最多可以移动 N 次。找出可以将球移出边界的路径数量。答案可能非常大,返回 结果 mod 10^9 + 7 的值。方法一一开始看题,以为类似机器人路径问题,直接用dfs迭代N次,从起点开始,将可到达的位置入栈,判断当前...
2020-03-11 15:50:30 298
原创 力扣每日一题(11)将数组分成和相等的三个部分
将数组分成和相等的三个部分1.判断数组能否分成和相等的三个部分2.找到数组中的两个分界点步骤一:求出数组的和,是否可以被3整除,若不能,返回False;反之,进行下一步。步骤二:求出两个不相等的索引 i 和 j ,且(j > i),将数组分为三个部分(注意第二个索引不能是数组末尾,即j != len(A)-1)。因为i 和 j将数组分为相等的三部分,那么每一个部分的累加和为数组的...
2020-03-11 09:57:20 1379 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人