这是悦乐书的第211次更新,第224篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第79题(顺位题号是374).我们正在玩数字游戏. 游戏如下:我从1到n中选择一个数字. 你必须猜测我选择了哪个数字.每次你猜错了,我都会告诉你这个数字是高还是低.您调用预定义的API guess(int num),它返回3个可能的结果(-1,1或0): -1:我的数字较低 1:我的数字更高 0:猜对了! 例如: 输入:n = 10,pick = 6 输出:6 本次解题使用的开发工具是…
[LeetCode]375. Guess Number Higher or Lower II 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/guess-number-higher-or-lower-ii/description/ 题目描述: We are playing the Guess Game. The game is as f…
这是悦乐书的第249次更新,第262篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第116题(顺位题号是507).我们定义Perfect Number是一个正整数,它等于除了它自己之外的所有正除数之和.现在,给定一个整数n,编写一个函数,当它是一个完美数字时返回true,否则返回false.例如: 输入:28 输出:true 说明:28 = 1 + 2 + 4 + 7 + 14 注意:输入数字n不会超过100,000,000.(1E8) 本次解题使用的开发工具是ec…
这是悦乐书的第311次更新,第332篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第180题(顺位题号是762).给定两个正整数L和R,在[L,R]范围内,计算每个整数的二进制数中1的个数,判断1的个数是否是一个素数.例如,21的二进制数是10101,其中1的个数有3个,3是一个素数.例如: 输入:L = 6,R = 10 输出:4 说明: 6 --> 110(2个1,2是素数) 7 --> 111(3个1,3是素数) 9 --> 1001(2个1,2是素数…
这是悦乐书的第308次更新,第328篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第177题(顺位题号是747).在给定的整数数组中,总有一个最大的元素.查找数组中的最大元素是否至少是数组中每个其他数字的两倍.如果是,则返回最大元素的索引,否则返回-1.例如: 输入:nums = [3,6,1,0] 输出:1 说明:6是最大的整数,对于数组x中的每个其他数字,6是x的两倍多. 值6的索引是1,所以我们返回1. 输入:nums = [1,2,3,4] 输出:-1 说明…
这是悦乐书的第292次更新,第310篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第160题(顺位题号是693).给定正整数,检查它是否具有交替位:即它的二进制数的任意两个相邻位总是具有不同的值.例如: 输入:5 输出:true 说明:5的二进制表示是:101 输入:7 输出:false 说明:7的二进制表示为:111. 输入:11 输出:false 说明:11的二进制表示是:1011. 输入:10 输出:true 说明:10的二进制表示是:1010. 本次解题使用…
这是悦乐书的第250次更新,第263篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第117题(顺位题号是509).Fibonacci数字,通常表示为F(n),形成一个称为Fibonacci序列的序列,这样每个数字是前两个数字的总和,从0和1开始.即,F(0)= 0,F(1)= 1.对于N> 1,F(N)= F(N-1)+ F(N-2).给定N,计算F(N).例如: 输入:2 输出:1 说明:F(2)= F(1)+ F(0)= 1 + 0 = 1. 输入:3 输出:2…
这是悦乐书的第200次更新,第209篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第65题(顺位题号是268).给定一个包含n个不同数字的数组,取自0,1,2,...,n,找到数组中缺少的数字.例如: 输入:[3,0,1] 输出:2 输入:[9,6,4,2,3,5,7,0,1] 输出:8 注意:您的算法应该以线性运行时复杂性运行. 你能用恒定的额外空间复杂度来实现吗? 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用…
这是悦乐书的第199次更新,第208篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第64题(顺位题号是263).编写一个程序来检查给定的数字是否是一个丑陋的数字.丑陋的数字是正数,其主要因子仅包括2,3,5.例如: 输入:6 输出:true 说明:6 = 2×3 输入:8 输出:true 说明:8 = 2×2×2 输入:14 输出:false 说明:14并不丑陋,因为它包含另一个因子7. 注意: 1通常被视为丑陋的数字. 输入在32位有符号整数范围内:[ -2^31…
这是悦乐书的第188次更新,第190篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第47题(顺位题号是202).编写算法以确定数字是否"幸福". 幸福数字是由以下过程定义的数字:从任何正整数开始,将数字替换为其数字的平方和,并重复该过程,直到最后数字等于1.这个过程以1结尾的那些数字是幸福的数字.如果陷入无限循环则不是幸福数字.例如: 输入:19 输出:true 说明: 1x1 + 9x9 = 82 8x8 + 2x2 = 68 6x6 + 8x8 = 1…
这是悦乐书的第175次更新,第177篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第34题(顺位题号是136).给定一个非空的整数数组,除了一个元素外,每个元素都会出现两次. 找到那个只出现了一次的元素.例如: 输入:[2,2,1] 输出:1 输入:[4,1,2,1,2] 输出:4 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试. 02 第一种解法 因为已经限定传入的数组不为空,所以此题不需要…
这是悦乐书的第144次更新,第146篇原创 今天这道题和回文有关,即从前往后和从后往前是一样的,如"上海自来水来自海上"就是一个回文字符串,如整数121就是回文数,这些都是和回文相关的. 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第3题(顺位题号是9),给定一个整数,判断其是否为回文整数,即向前读和向后读的整数一样. 输入: 121 输出: true 输入: -121 输出: false 说明:从左到右读为-121.从右到左读为121-.因此它不是回文. 输入…
这是悦乐书的第318次更新,第339篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第186题(顺位题号是804).国际莫尔斯电码定义了一种标准编码,其中每个字母映射到一系列点和短划线,如下所示:"a"映射到".-","b"映射到"-...","c"映射到"-.-.", 等等. 为方便起见,下面给出了英文字母26个字母的完整表格: [".-"…
这是悦乐书的第281次更新,第298篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第149题(顺位题号是657).在2D平面上有一个从位置(0,0)开始的机器人.给定其移动序列,判断该机器人在完成移动后是否在(0,0)处结束.移动序列由字符串表示,字符move [i]表示其第i个移动.有效移动是R(右),L(左),U(上)和D(下).如果机器人在完成所有移动后返回原点,则返回true.否则,返回false. 注意:机器人的"朝向"无关紧要. "R…
这是悦乐书的第307次更新,第327篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第176题(顺位题号是746).在楼梯上,第i步有一些非负成本成本[i]分配(0索引).一旦支付了费用,您可以爬一到两步.您需要找到到达楼层顶部的最低成本,您可以从索引为0的步骤开始,也可以从索引为1的步骤开始.例如: 输入:cost= [10,15,20] 输出:15 说明:最便宜的是从成本[1]开始,支付该成本并返回顶部. 输入:cost= [1,100,1,1,1,100,1,1…
这是悦乐书的第303次更新,第322篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第171题(顺位题号是720).给出表示英语词典的字符串单词数组,找到单词中长度最长的单词,此单词可以通过数组中的其他单词一次次构建一个字符而得来.如果有多个可能的答案,则返回字典顺序最小的最长单词.如果没有答案,则返回空字符串.例如: 输入:words = ["w","wo","wor","worl","…
这是悦乐书的第302次更新,第321篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第170题(顺位题号是717).有两个特殊字符,第一个字符可以用一个比特0表示,第二个字符可以用两个比特(10或11)表示.现在给出一个由比特位组成的数组,判断其最后一个字符是否是一位字符.数组的最后一位始终是比特0.例如: 输入:bits = [1,0,0] 输出:true 说明:解码它的唯一方法是两位字符和一位字符,所以最后一个字符是一位字符. 输入:bits = [1,1,1,0…
这是悦乐书的第294次更新,第312篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第162题(顺位题号是697).给定一个由正整数组成的非空数组,该数组的度数被定义为任意元素出现次数最多的次数.你的任务是找到一个(连续的)nums子数组的最小可能长度,它与nums具有相同的度数.例如: 输入:[1,2,2,3,1] 输出:2 说明:输入数组的度数为2,因为元素1和2都出现两次.在具有相同程度的子阵列中:[1,2,2,3,1],[1,2,2,3],[2,2,3,1],…
这是悦乐书的第286次更新,第303篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第154题(顺位题号是674).给定未排序的整数数组,找到最长连续增加子序列的长度.例如: 输入:[1,3,5,4,7] 输出:3 说明:最长的连续增加子序列为[1,3,5],其长度为3,即使[1,3,5,7]也是一个增加的子序列,它不是一个连续的,其中5和7被4分开. 输入:[2,2,2,2,2] 输出:1 说明:最长连续增加子序列为[2],其长度为1. 注意:数组长度不超过10,0…
这是悦乐书的第278次更新,第294篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第146题(顺位题号是643).给定由n个整数组成的数组,找到具有最大平均值的长度为k的连续子数组,并输出最大平均值.例如: 输入:[1,12,-5,-6,50,3],k = 4 输出:12.75 说明:最大平均值为(12-5-6 + 50)/ 4 = 51/4 = 12.75 注意: 1 <= k <= n <= 30,000. 给定数组的元素将在[-10,000,10,00…
这是悦乐书的第276次更新,第292篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第144题(顺位题号是633).给定一个非负整数c,判断是否存在两个整数a和b,使得a的平方与b的平方之和等于c.例如: 输入:5 输出:true 说明:1 x 1 + 2 x 2 = 5 输入:3 输出:false 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试. 02 第一种解法 暴力解法,直接使用两层for…
这是悦乐书的第274次更新,第290篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第142题(顺位题号是617).提供两个二叉树,将其合并为新的二叉树,也可以在其中一个二叉树上进行覆盖.合并规则是如果两个节点重叠(都不为空),则将节点值加起来作为合并节点的新值. 否则,其中一个不为空的节点将用作新树的节点.例如: Tree 1 Tree 2 1 2 / \ / \ 3 2 1 3 / \ \ 5 4 7 合并后的新二叉树: 3 / \ 4 5 / \ \ 5 4 7…
这是悦乐书的第269次更新,第283篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第136题(顺位题号是590).给定一个n-ary树,返回其节点值的后序遍历.例如,给定一个3-ary树: 1 / | \ 3 2 4 / \ 5 6 其后序遍历结果为:[5,6,3,2,4,1]. 注意:递归解决方案是微不足道的,你可以用迭代的方式做吗? 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试. 02…
这是悦乐书的第268次更新,第282篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第135题(顺位题号是589).给定一个n-ary树,返回其节点值的前序遍历.例如,给定一个3-ary树: 1 / | \ 3 2 4 / \ 5 6 其前序遍历结果为:[1,3,5,6,2,4]. 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试. 02 第一种解法 利用递归.二叉树前序遍历是从根节点开始,然后是…
这是悦乐书的第267次更新,第281篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第134题(顺位题号是581).给定一个整数数组,找到一个连续的子数组,按升序对该子数组进行排序,使得整个数组也按升序排序.找到最短的无序连续子数组并输出其长度.例如: 输入:[2,6,4,8,10,9,15] 输出:5 说明:按升序对[6,4,8,10,9]子数组进行排序,以使整个数组按升序排序. 注意: 数组的长度在[1,100]范围内. 数组可能包含重复项,因此这里的升序表示<=…
这是悦乐书的第265次更新,第278篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第132题(顺位题号是572).给定两个非空的二进制树s和t,检查树t是否具有完全相同的结构和具有子树s的节点值. s的子树是一个树,由s中的节点和所有节点的后代组成. 树也可以被视为自己的子树.例如: 鉴于树s: 3 / \ 4 5 / \ 1 2 鉴于树t: 4 / \ 1 2 返回true,因为t具有相同的结构和节点值,其子树为s. 鉴于树s: 3 / \ 4 5 / \ 1 2…
这是悦乐书的第258次更新,第271篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第125题(顺位题号是551).您将获得一个表示学生出勤记录的字符串. 该记录仅包含以下三个字符: 'A':缺席. 'L':迟到. 'P':在场. 如果学生的出勤记录不超过一个"A"(缺席)或超过两个连续的"L"(迟到),则可以奖励学生.您需要返回学生是否可以根据他的出勤记录获得奖励.例如: 输入:"PPALLP" 输出:true 输入…
这是悦乐书的第257次更新,第270篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第124题(顺位题号是543).给定二叉树,您需要计算树的直径长度. 二叉树的直径是树中任意两个节点之间最长路径的长度. 此路径可能会也可能不会通过根节点.例: 给出一棵二叉树 1 / \ 2 3 / \ 4 5 返回3,这是路径[4,2,1,3]或[5,2,1,3]的长度. 注意:两个节点之间的路径长度由它们之间的边数表示. 本次解题使用的开发工具是eclipse,jdk使用的版本是…
这是悦乐书的第252次更新,第265篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第119题(顺位题号是521).给定一组两个字符串,您需要找到这组两个字符串中最长的不同子序列.最长的不同子序列被定义为这些字符串之一的最长子序列,并且此子序列不应该是其他字符串的任何子序列. 子序列是可以通过删除一些字符而不改变其余元素的顺序从一个序列导出的序列.任何字符串都是其自身的子序列,空字符串是任何字符串的子序列.输入将是两个字符串,输出需要是最长的不同子序列的长度.如果最长…
这是悦乐书的第244次更新,第257篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第111题(顺位题号是496).你有两个数组(没有重复)nums1和nums2,其中nums1的元素是nums2的子集.在nums2的相应位置找到nums1元素的所有下一个更大的数字.nums1中的数字x的下一个更大数字是nums2中右边第一个更大的数字.如果它不存在,则输出该数字的-1.例如: 输入:nums1 = [4,1,2],nums2 = [1,3,4,2]. 输出:[-1,…