
练习题
Arivan
这个作者很懒,什么都没留下…
展开
-
对称二叉树(LeetCode)
题目描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3]是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个[1,2,2,null,3,null,3]则不是镜像对称的: 1 / \ 2 2 \ \ 3 3解题思路:先检查根节点的左右...原创 2019-06-09 08:57:54 · 418 阅读 · 0 评论 -
两数之和(不使用+、- 运算符)LeetCode
题目描述:不使用运算符+和-,计算两整数a、b之和。示例 1:输入: a = 1, b = 2输出: 3示例 2:输入: a = -2, b = 3输出: 1解题思路:a^b 是取得两数无进位相加,a & b 是取得两数相加后的进位。 无进位相加与进位不断异或,直至进位为0代码实现:class Solution { pu...原创 2019-04-27 13:13:38 · 837 阅读 · 0 评论 -
用栈实现队列 (LeetCode)
题目描述:使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // ...原创 2019-04-17 22:02:08 · 285 阅读 · 0 评论 -
二进制间距 (LeetCode)
题目描述:给定一个正整数N,找到并返回N的二进制表示中两个连续的 1 之间的最长距离。如果没有两个连续的 1,返回0。示例 1:输入:22输出:2解释:22 的二进制是 0b10110 。在 22 的二进制表示中,有三个 1,组成两对连续的 1 。第一对连续的 1 中,两个 1 之间的距离为 2 。第二对连续的 1 中,两个 1 之间的距离为 1 。答案...原创 2019-04-21 10:52:00 · 368 阅读 · 0 评论 -
杨辉三角(ArrayList)- LeetCode
题目描述:代码实现:class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> result = new ArrayList<>(numRows); for (in...原创 2019-04-10 12:44:18 · 225 阅读 · 0 评论 -
重排链表(Java实现)
题目描述:给定一个单链表L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为:L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4-&...原创 2019-03-18 19:57:29 · 1322 阅读 · 0 评论 -
反转字符串中的单词(Java实现)
题目描述:给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例1:输入: "Let's take LeetCode contest"输出: "s'teL ekat edoCteeL tsetnoc"解题思路:首先写一个反转部分字符串的工具方法。 将字符串转换为字符数组。然后从前往后遍历,第一个不是空格的字符,或空格后面的第一个字符...原创 2019-03-17 08:17:55 · 4489 阅读 · 0 评论 -
丑数 -(LeetCode)
题目描述:编写一个程序判断给定的数是否为丑数。丑数就是只包含质因数2, 3, 5的正整数。示例 1:输入: 6输出: true解释: 6 = 2 ×3示例 2:输入: 8输出: true解释: 8 = 2 × 2 ×2示例3:输入: 14输出: false 解释: 14不是丑数,因为它包含了另外一个质因数7。说明:1是丑数。...原创 2019-04-12 16:50:54 · 11763 阅读 · 4 评论 -
链表中环的入口节点 - (剑指offer)
题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解题思路:遍历链表,将链表中每一个节点存放进链表中,每次存放前,要判断链表是否包含当前链表,如果包含,则说明此链表是环链表的入口节点。如果当前节点为空,则说明此链表没有环。代码实现:import java.util.*;public class Solution { public Li...原创 2019-04-09 16:28:57 · 283 阅读 · 0 评论 -
数组中只出现一次的数字(剑指offer)
题目描述:解题思路:将给定数组排序 从第二个元素开始,往后遍历到倒数第二个元素,如果当前元素与上一个元素、下一个元素都不相等,则说明此元素是只出现一次的,将此元素放入存放结果的数组中。只要找出两个只出现一次的元素,就停止遍历。 如果第一个元素与第二个元素不相等,则此元素只出现一次;如果最后一个元素与倒数第二个元素不相等,则此元素只出现一次。代码实现://num1,num2分...原创 2019-04-08 20:29:35 · 197 阅读 · 0 评论 -
寻找数组的中心索引-LeetCode
题目描述:给定一个整数类型的数组nums,请编写一个能够返回数组“中心索引”的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入: nums = [1, 7, 3, 6, 5, 6]输出: 3解释: ...原创 2019-04-02 21:02:23 · 215 阅读 · 0 评论 -
两句话中不常见单词(LeetCode)
题目描述:给定两个句子A和B。(句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。返回所有不常用单词的列表。您可以按任何顺序返回列表。示例 1:输入:A = "this apple is sweet", B = "this apple is sour"输出:["s...原创 2019-05-03 12:57:00 · 469 阅读 · 0 评论 -
用队列实现栈(LeetCode)
题目描述:使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // ...原创 2019-04-29 15:13:59 · 384 阅读 · 0 评论 -
二叉树的层次遍历(LeetCode)
题目描述:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解题思路:利用队列的先进先出原则,先将每一层的节点...原创 2019-06-06 15:09:48 · 314 阅读 · 0 评论 -
保持城市天际线(LeetCode)
题目描述:在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度。 高度 0 也被认为是建筑物。最后,从新数组的所有四个方向(即顶部,底部,左侧和右侧)观看的“天际线”必须与原始数组的天际线相同。 城市的天际线是从远处观看时,由所有建筑物形成的矩形的外部轮廓。 请看下面的例子。建筑物高度可以增加的最大总和...原创 2019-05-28 11:47:04 · 293 阅读 · 0 评论 -
不要二(牛客网)
题目描述:链接:https://www.nowcoder.com/questionTerminal/1183548cd48446b38da501e58d5944eb二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x...原创 2019-05-27 14:48:19 · 641 阅读 · 0 评论 -
最优除法 (LeetCode)
题目描述:给定一组正整数,相邻的整数之间将会进行浮点除法操作。例如,[2,3,4] -> 2 / 3 / 4 。但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级。你需要找出怎么添加括号,才能得到最大的结果,并且返回相应的字符串格式的表达式。你的表达式不应该含有冗余的括号。示例:输入: [1000,100,10,2]输出: "1000/(100/10/2)"...原创 2019-05-16 21:57:28 · 425 阅读 · 0 评论 -
基于命令行界面的简易收银系统
功能实现: 浏览商品清单、添加商品、下架商品、修改商品信息、商品信息存于properties文件中 查看订单、下单、取消商品、修改订单信息、账单结算功能 实现思路:使用到的技术: properties属性文件 集合框架 I/O流 操作字符串(分隔、截取等) 程序结构与逻辑控制 封装、多态 效果展示:主...原创 2019-05-24 20:44:03 · 318 阅读 · 0 评论 -
分发饼干(LeetCode)
题目描述:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj。如果 sj>= gi,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。注意:你可以假设胃口...翻译 2019-05-11 16:23:20 · 206 阅读 · 0 评论 -
相对名次(LeetCode)
题目描述:给出N名运动员的成绩,找出他们的相对名次并授予前三名对应的奖牌。前三名运动员将会被分别授予 “金牌”,“银牌” 和“ 铜牌”("Gold Medal", "Silver Medal", "Bronze Medal")。(注:分数越高的选手,排名越靠前。)示例 1:输入: [5, 4, 3, 2, 1]输出: ["Gold Medal", "Silver Medal...原创 2019-05-10 16:26:26 · 589 阅读 · 0 评论 -
二进制手表(LeetCode)
题目描述:二进制手表顶部有 4 个 LED 代表小时(0-11),底部的 6 个 LED 代表分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。例如,上面的二进制手表读取 “3:25”。给定一个非负整数n代表当前 LED 亮着的数量,返回所有可能的时间。案例:输入: n = 1返回: ["1:00", "2:00", "4:00", "8:00...原创 2019-05-06 15:07:26 · 1561 阅读 · 0 评论 -
子域名访问次数(LeetCode)
题目描述:一个网站域名,如"discuss.leetcode.com",包含了多个子域名。作为顶级域名,常用的有"com",下一级则有"leetcode.com",最低的一级为"discuss.leetcode.com"。当我们访问域名"discuss.leetcode.com"时,也同时访问了其父域名"leetcode.com"以及顶级域名"com"。给定一个带访问次数和域名的组合,要...原创 2019-05-01 19:16:14 · 462 阅读 · 0 评论 -
写字符串的行数(LeetCode)
题目描述:我们要把给定的字符串S从左到右写到每一行上,每一行的最大宽度为100个单位,如果我们在写某个字母的时候会使这行超过了100 个单位,那么我们应该把这个字母写到下一行。我们给定了一个数组widths,这个数组widths[0] 代表 'a' 需要的单位,widths[1] 代表 'b' 需要的单位,...,widths[25] 代表 'z' 需要的单位。现在回答两个问...原创 2019-04-30 12:57:13 · 261 阅读 · 0 评论 -
棒球比赛-LeetCode (Java实现)
题目描述:你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2."+"(一轮的得分):表示本轮获得的得分是前两轮有效回合得分的总和。3."D"(一轮的得分):表示本轮获得的得分是前一轮有效回合得分的两倍。4."C"(一个操作,这不是一个回合的分数):表示您获得的最后一个有效回合的分数是无效...原创 2019-04-01 17:49:33 · 375 阅读 · 0 评论 -
二维数组中的查找(Java)
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解题思路:从第一行开始二分查找。代码实现:class Solution { public boolean Find(int target, int [][] array) ...原创 2019-03-27 15:17:58 · 197 阅读 · 0 评论 -
两个数组的交集-LeetCode(Java实现)
题目描述:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。解题思路:写一个工具类,...原创 2019-03-31 13:23:22 · 1029 阅读 · 0 评论 -
删除单链表的给定节点(非末尾)
此删除法,只给了需要删除的那个节点!请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = ...原创 2019-03-12 19:22:23 · 356 阅读 · 2 评论 -
图片平滑器(Java实现)-LeetCode
题目描述:包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度(向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个,则尽可能多的利用它们。示例 1:输入:[[1,1,1], [1,0,1], [1,1,1]]输出:[[0, 0, 0], [0, 0, 0], [0, 0, 0]]解释:...原创 2019-03-11 18:55:33 · 612 阅读 · 0 评论 -
蓝桥杯-因式分解(Java)
问题描述 设计算法,用户输入合数,程序输出若个素数的乘积。例如,输入6,输出2*3。输入20,输出2*2*5。public class Test1_27 { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); Factorizat...原创 2019-01-27 13:51:35 · 402 阅读 · 0 评论 -
蓝桥杯-数的读法(Java)
本写法不是最高效的,但是我自认为比较易懂问题描述 当输入12 3456 7009时,会给出相应的念法: 十二亿三千四百五十六万七千零九 用汉语拼音表示为 shi er yi san qian si bai wu shi liu wan qi qian ling jiu 设计这样一个系统:给定一个阿拉伯数字串,你帮他按照中文读写的规范转为汉语拼音字串,相邻的两个音节用...原创 2019-01-22 14:34:38 · 1535 阅读 · 2 评论 -
山羊拉丁文-LeetCode(Java实现)
题目描述:给定一个由空格分割单词的句子S。每个单词只包含大写或小写字母。我们要将句子转换为“Goat Latin”(一种类似于 猪拉丁文- Pig Latin 的虚构语言)。山羊拉丁文的规则如下:如果单词以元音开头(a, e, i, o, u),在单词后添加"ma"。 例如,单词"apple"变为"applema"。 如果单词以辅音字母开头(即非元音字母),移除第一个字符...原创 2019-03-22 12:26:08 · 222 阅读 · 0 评论 -
分隔链表-LeetCode
题目描述:给定一个链表和一个特定值x,对链表进行分隔,使得所有小于x的节点都在大于或等于x的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5解题思路:创建两个新链表,一个存放原链表中...原创 2019-03-28 19:02:15 · 207 阅读 · 0 评论 -
两数相加(单链表)-LeetCode
题目描述:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -&...原创 2019-03-27 12:25:52 · 275 阅读 · 0 评论 -
二进制求和-LeetCode(Java实现)
题目描述:给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字1和0。示例1:输入: a = "1010", b = "1011"输出: "10101"示例2:输入: a = "10100000100100110110010000010101111011011001101110111111111101000000101111001...原创 2019-03-23 09:32:02 · 722 阅读 · 0 评论 -
长按键入-LeetCode(Java)
题目描述:你的朋友正在使用键盘输入他的名字name。偶尔,在键入字符c时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回True。示例 1:输入:name = "alex", typed = "aaleex"输出:true解释:'alex' 中的 'a' 和...原创 2019-03-26 12:24:09 · 248 阅读 · 0 评论 -
罗马数字转整数-LeetCode(Java实现)
题目描述:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为...原创 2019-03-21 12:51:41 · 330 阅读 · 0 评论 -
奇偶链表(Java实现)
题目:给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5...原创 2019-03-13 16:38:00 · 1061 阅读 · 0 评论 -
反转单链表中的子链表(Java实现)
本解题方法可能有点啰嗦,也不是最优解法,但是我自认为还是比较好理解的。题目描述:反转从位置m到n的链表。请使用一趟扫描完成反转。说明:1 ≤m≤n≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL解题思路...原创 2019-03-14 13:30:46 · 398 阅读 · 0 评论 -
旋转数组-LeetCode(Java实现)
题目描述:给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例2:输入: [-1,-1...原创 2019-03-23 14:39:58 · 735 阅读 · 1 评论 -
字符串相加-LeetCode(Java实现)
题目描述:给定两个字符串形式的非负整数num1和num2,计算它们的和。注意:num1和num2的长度都小于 5100. num1和num2都只包含数字0-9. num1和num2都不包含任何前导零。 你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式。解题思路:先把两个字符串反转,然后变成相同长度(在短的字符串后面加...原创 2019-03-25 12:42:23 · 895 阅读 · 0 评论