[Q13] Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, two is written as II in Roman numeral, just two one's added together. Twelve is written as, XII, w…
[Q10] Given an input string (s) and a pattern (p), implement regular expression matching with support for '.' and '*'. '.' Matches any single character. '*' Matches zero or more of the preceding element. The matching should cover the entire input str…
[Q7]  把数倒过来 Given a 32-bit signed integer, reverse digits of an integer. Example 1: Input: 123 Output: 321 Example 2: Input: -123 Output: -321 Example 3: Input: 120 Output: 21 Solution: https://leetcode.com/problems/reverse-integer/discuss/229800/Pyt…
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 题解:转换的方法:从左往右扫描罗马字符,如果当前的字符对应的数字比上一个数字小,就直接加上这个数字:否则加上这个数字并且减去上一个数字的两倍,然后更新上一个数字.利用一个HashMap存放罗马字符和数字的对应. 罗马数字和阿拉伯数字的对应表格参见http://www.cnblogs.…
[Q19] Given a linked list, remove the n-th node from the end of list and return its head. Example: Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5. Note: Giv…
[Q4] There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)). You may assume nums1 and nums2 cannot be both empty. Example 1: nums1 = […
[Q1] Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution, and you may not use the same element twice. Example: Given nums = [2, 7, 11…
这是悦乐书的第145次更新,第147篇原创 今天这道题和罗马数字有关,罗马数字也是可以表示整数的,如"I"表示数字1,"IV"表示数字4,下面这道题目就和罗马数字有关,你能猜到吗? 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第4题(顺位题号是17),给定一组罗马数字组成的字符串,将其转换为整数. 罗马数字包含下面7个字符: 符号 值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 下面是些小例子,帮助我们更好理解组…
这是悦乐书的第143次更新,第145篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第2题(顺位题号是7),给定32位有符号整数,然后将其反转输出.例如: 输入: 123 输出: 321 输入: -123 输出: -321 输入: 120 输出: 21 给定反转整数范围: [−2^31, 2^31 − 1],即在int的最小值.最大值之间,如果反转整数超过此范围,则返回0. 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,…
这是悦乐书的第298次更新,第317篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第166题(顺位题号是705).不使用任何内建的hash表库设计一个hash集合,应包含以下功能: add(value):向哈希集合中插入一个值. contains(value) :返回哈希集合中是否存在这个值. remove(value):将给定值从哈希集合中删除.如果哈希集合中没有这个值,什么也不做. 例如: MyHashSet hashSet = new MyHashSet();…
这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使用二进制补码方法.例如: 输入:26 输出:"1a" 输入:-1 输出:"ffffffff" 注意: 十六进制(a-f)中的所有字母必须为小写. 十六进制字符串不得包含额外的前导0.如果数字为零,则由单个零字符"0"表示;否则,十六进制字符串中的第一…
LeetCode介绍 LeetCode是算法练习.交流等多功能网站,感兴趣的同学可以关注下(老司机请超车).页面顶部的Problems菜单对应算法题库,附带历史通过滤.难易程度等信息. 未来计划 打算用Kotlin语言,按照从易到难的顺序有选择地实现LeetCode库中的算法题,考虑到Kotlin的学习与巩固.算法的思考与优化,争取一星期完成一篇文章(每篇只总结一题,可能偷偷做了后面的好几题^_^). 当然,除了单纯地用kotlin实现外,还会指出一些容易忽略的坑,并对结果进行更深一层的分析.…
这是悦乐书的第320次更新,第341篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第189题(顺位题号是811).像"discuss.leetcode.com"这样的网站域名由各种子域组成.在顶级,我们有"com",在下一级,我们有"leetcode.com",在最低级别,"discuss.leetcode.com".当我们访问像"discuss.leetcode.com"这样…
这是悦乐书的第314次更新,第335篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第183题(顺位题号是783).给定具有根节点值的二叉搜索树(BST),返回树中任何两个不同节点的值之间的最小差值.示例: 给定的树[4,2,6,1,3,null,null]由下图表示: 4 / \ 2 6 / \ 1 3 输出:1 说明:请注意,root是TreeNode对象,而不是数组.该树中的任意节点最小差值为1,它发生在节点1和节点2之间,也发生在节点3和节点2之间. 注意:…
这是悦乐书的第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是素数…
这是悦乐书的第305次更新,第324篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第173题(顺位题号是728).自分割数是一个可被其包含的每个数字整除的数字.例如,128是自分割数,因为128%1 == 0,128%2 == 0,128%8 == 0.此外,不允许自分割数包含数字零.给定数字的下限和上限,输出每个可能的自分割数的数组,如果可能,包括边界.例如: 输入:left = 1,right = 22 输出:[1,2,3,4,5,6,7,8,9,11,12,1…
这是悦乐书的第303次更新,第322篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第171题(顺位题号是720).给出表示英语词典的字符串单词数组,找到单词中长度最长的单词,此单词可以通过数组中的其他单词一次次构建一个字符而得来.如果有多个可能的答案,则返回字典顺序最小的最长单词.如果没有答案,则返回空字符串.例如: 输入:words = ["w","wo","wor","worl","…
这是悦乐书的第300次更新,第319篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第168题(顺位题号是707).设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点.假设链表中的所有节点都是 0-index 的.在链表类中实现这些功能: get(index):获取链表中第 index…
这是悦乐书的第299次更新,第318篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第167题(顺位题号是706).在不使用任何内置哈希表库的情况下设计HashMap.具体而言,你的设计应包括以下功能: put(key,value):将一个(key,value)对插入HashMap.如果该值已存在于HashMap中,请更新该值. get(key):返回指定键映射到的值,如果此映射不包含键的映射,则返回-1. remove(key):如果此映射包含键的映射,则删除值键的…
这是悦乐书的第296次更新,第315篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第164题(顺位题号是703).设计一个类来查找流中第k个最大元素.请注意,它是排序顺序中的第k个最大元素,而不是第k个不同元素.KthLargest类有一个构造方法,此构造方法有一个整数k和一个整数数组nums两个参数,它包含来自流的初始元素.对于方法KthLargest.add的每次调用,返回表示流中第k个最大元素的元素.例如: int k = 3; int [] arr = [4…
这是悦乐书的第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],…
这是悦乐书的第292次更新,第310篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第160题(顺位题号是693).给定正整数,检查它是否具有交替位:即它的二进制数的任意两个相邻位总是具有不同的值.例如: 输入:5 输出:true 说明:5的二进制表示是:101 输入:7 输出:false 说明:7的二进制表示为:111. 输入:11 输出:false 说明:11的二进制表示是:1011. 输入:10 输出:true 说明:10的二进制表示是:1010. 本次解题使用…
这是悦乐书的第291次更新,第309篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第159题(顺位题号是690).定义员工信息的数据结构,其中包括员工的唯一ID,他的重要性值以及他的直接下属ID.例如,员工1是员工2的领导者,员工2是员工3的领导者.他们的重要性值分别为15,10和5.然后,员工1具有[1,15,[2]]等数据结构,员工2具有[2,10,[3]],员工3具有[3,5,[]].请注意,虽然员工3也是员工1的下属,但该关系不是直接的.现在,根据公司的员工…
这是悦乐书的第288次更新,第305篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第156题(顺位题号是682).你现在是棒球比赛点记录器.给定一个字符串列表,每个字符串可以是以下4种类型之一: 整数(一轮的得分):直接表示你在这轮中获得的积分数. "+"(一轮的得分):表示你在这一轮得到的分数是最后两个有效回合分数的总和. "D"(一轮得分):表示你在这一轮得到的分数是最后一轮有效回合分数的加倍数据. "C"(一项…
这是悦乐书的第285次更新,第302篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第153题(顺位题号是671).给定非空的特殊二叉树,其由具有非负值的节点组成,其中该树中的每个节点具有恰好两个或零个子节点. 如果节点具有两个子节点,则该节点的值是其两个子节点中的较小值.给定这样的二叉树,您需要输出由整个树中所有节点的值组成的集合中的第二个最小值.如果不存在这样的第二个最小值,则输出-1.例如: 2 / \ 2 5 / \ 5 7 输出:5 2 / \ 2 2 输出…
这是悦乐书的第280次更新,第296篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第148题(顺位题号是653).给定二进制搜索树和目标数,如果BST中存在两个元素,使得它们的总和等于给定目标,则返回true.例如: 5 / \ 3 6 / \ \ 2 4 7 目标值:9 输出:true 5 / \ 3 6 / \ \ 2 4 7 目标值:28 输出:false 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Jav…
这是悦乐书的第279次更新,第295篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第147题(顺位题号是645).集合S最初包含从1到n的数字. 但不幸的是,由于数据错误,集合中的一个数字被复制到集合中的另一个数字,这导致重复一个数字而丢失另一个数字.给定一个数组nums,表示错误后该集的数据状态.要求先找到两次出现的数字,然后找到丢失的数数字,最后以数组的形式返回它们.例如: 输入:nums = [1,2,2,4] 输出:[2,3] 注意: 给定的数组大小将在[2…
这是悦乐书的第277次更新,第293篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第145题(顺位题号是637).给定一个非空二叉树,以数组的形式返回每一层节点值之和的平均值.例如: 3 / \ 9 20 / \ 15 7 输出:[3,14.5,11] 说明:第一层上的节点的平均值为3,第二层上的节点的平均值为14.5,第三层上的节点的平均值为11.因此返回[3,14.5,11]. 注意:节点值的范围在32位有符号整数的范围内. 本次解题使用的开发工具是eclips…
这是悦乐书的第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…
这是悦乐书的第275次更新,第291篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第143题(顺位题号是628).给定一个整数数组,从其中找出三个数,使得乘积最大.例如: 输入:[1,2,3] 输出:6 输入:[1,2,3,4] 输出:24 注意: 数组的长度范围为[3,10^4],元素值范围为[-1000,1000]. 任意三个数字的乘积不会超过32位有符号整数的范围. 本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,…