leetcode简单题库java语言
开始刷leetcode的简单题库,每周更新
2019.2.18:因为个人原因,开始讲刷题语言更改为python
任菜菜学编程
暂无
展开
-
leetcode38. 外观数列
思路:最关键的理解外观数列,我举例一个长的例子来说7. 131122218. 11132132118的由来是因为7的序列1/3/11/222/1 ->一个1/一个3/两个1/三个2/一个1->11/13/21/321/1首先我们可以递归可以循环,假设:每次循环我求上一次的外观数列,那么第一次为1,往后一次求2、3、4...n对于n-1的数列,我们进行...原创 2020-02-01 23:20:44 · 358 阅读 · 0 评论 -
leetcode101. 对称二叉树
思路:用树的遍历的思路即可解决(用递归实现),首先我想的结束条件是只要树为空即返回成功,然后如果当前节点值相同、左子树、右子树对应相同即可特殊处理:如果创造一个对称树或者创造一个一摸一样的树会浪费很长时间,这里用了一个特殊技巧就是这个代码return A(root,root);可以创造一个相同的树,在A函数中进行比较遇到的坑,本以为只要任意一个树是空就true,但是忘记了遍历的时...原创 2020-02-01 22:41:19 · 170 阅读 · 0 评论 -
leetocde234. 回文链表
思路:这个题的方法有很多,我这里采用的是一种转换思路,首先遍历所有结点并且把结点都取出来放到StringBuilder对象里,然后转换成Sring比较s与s的倒置,代码如下(错误):/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next;...原创 2020-01-12 12:00:33 · 155 阅读 · 0 评论 -
leetcode226. 翻转二叉树
思路:先序、后序、中序遍历,然后每次都进行左右子树的交换。遇到的坑:中序遍历时,先遍历一个树,在交换左右子树,再遍历时,其实还这个这个树(大家可以细品)先序递归:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * ...原创 2020-01-12 11:23:28 · 196 阅读 · 0 评论 -
leetcode232. 用栈实现队列
思路:用两个栈即可完美实现队列,因为栈a元素都倒到栈b,则栈b就是先进后出的队列顺序,当输出是输出输出栈b的栈顶,当输入时,则押入输入栈a,当b内没元素时,就把a中元素都倒入b,当a、b都空时即以为该队列为空。class MyQueue { //定义两个栈,一个为输入栈,一个为输出栈 Stack<Integer> a; Stack<Integer&g...原创 2020-01-12 11:11:58 · 172 阅读 · 0 评论 -
leetcode206. 反转链表
思路:进行分类,输入0个元素和1个元素时,直接返回头节点即可,输入2个元素时,让第二个元素next指向第一个元素,第一个元素next指向空,返回第二个元素即可。当输入三个元素时,我们可以让元素next依次指向前一个元素,但是如果该元素next指向了前一个元素,后一个元素就找不到了啊?所有,我们设置三个三个指针p1-3,p1是被指向的前一个元素,p2是当前元素,p3是记录当前元素的下一个元素,每次p...原创 2020-01-12 10:54:53 · 166 阅读 · 0 评论 -
leetcode168. Excel表列名称
给定一个正整数,返回它在 Excel 表中相对应的列名称。例如, 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB ...示例 1:输入: 1输出: "A"示例 2:输入: 28输出: "AB"示例 3:...原创 2018-07-25 21:15:35 · 278 阅读 · 0 评论 -
leetcode136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4思路:我这个题主要考虑了不实用额外空间,没有卡线性时间的要求。直接遍历循环,建立一个信号量来判断本...原创 2018-07-19 16:04:44 · 204 阅读 · 0 评论 -
leetcode125. 验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false思路:java里面验证标准的回文串是非常容易的,倒置一下,比较一下就出来了。本...原创 2018-07-19 15:56:24 · 438 阅读 · 0 评论 -
leetcode121. 买卖股票的最佳时机
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...原创 2018-07-19 15:49:29 · 186 阅读 · 0 评论 -
leetcode100. 相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...原创 2018-07-19 15:17:34 · 156 阅读 · 0 评论 -
leetcode88. 合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 ...原创 2018-07-19 15:04:48 · 209 阅读 · 0 评论 -
leetcode70. 爬楼梯
假设你正在爬楼梯。需要ñ步你才能到达楼顶。 每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定ñ是一个正整数。 示例1:输入: 2输出: 2解释:有两种方法可以爬到楼顶。1. 1步+ 1步2. 2步示例2:输入: 3输出: 3解释:有三种方法可以爬到楼顶。1. 1步+ 1步+ 1步2. 1步+2步3. 2步+ 1步思路:此问题为斐波那契数,可以写出递归...原创 2018-07-03 16:23:03 · 217 阅读 · 0 评论 -
leetcode 69. x 的平方根
实现 int sqrt(int x) 函数。计算并返回 X 的平方根,其中 X 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例1:输入: 4 输出: 2示例2:输入: 8 输出: 2 说明: 8的平方根是2.82842 ..., 由于返回类型是整数,小数部分将被舍去。思路:直接利用开方函数sqrt(),外加强制类型转化为int即可。...原创 2018-07-03 16:00:31 · 189 阅读 · 0 评论 -
leetcode67. 二进制求和
给定两个二进制字符串,返回他们的和(用二进制表示)。为输入侧非空字符串御姐只所有游戏数字 1 状语从句: 0。示例1:输入: a =“11”,b =“1” 输出: “100”示例2:输入: a =“1010”,b =“1011” 输出: “10101”思路:先将两个字符串对其(短的前面补0),然后从后面开始相加,存入新数组,存入过程中考虑进位情况以及最后是否是否会产生扩位的情况,最后导致新...原创 2018-07-03 15:55:56 · 957 阅读 · 0 评论 -
leetcode66. 加一
定给一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。最高位数字存放在数组的首位,数组中每个元素只存一个数字。你可以假设除了整数0之外,这个整数不会以零开头。示例1:输入: [1,2,3] 输出: [1,2,4] 解释:输入数组表示数字123。示例2:输入: [4,3,2,1] 输出: [4,3,2,2] 解释:输入数字表示数字4321。思路:将数组转换成字符串再转换成...原创 2018-06-11 18:56:57 · 189 阅读 · 0 评论 -
leetcode58. 最后一个单词的长度
定给一个仅所有游戏大小写字母状语从句:空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回0。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: “Hello World”输出: 5思路:特殊情况:一个单词情况(无空格),无单词情况(长度为0),正常情况。优先判断特殊情况,对于正常情况,利用lastIndexOf函数和length函数做差即可。遇...原创 2018-06-08 15:31:21 · 265 阅读 · 0 评论 -
leetcode53. 最大子序和
给定一个整数数组 ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 nums示例:输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组[4,-1,2,1]的和最大,为6 。进阶:如果你已经实现复杂度为O(n)的解法,尝试使用更为精妙的分治法求解。思路:暴力解决,直接循环遍历,计算所有的组合,选出最大的和即可。class Solu...原创 2018-06-08 14:52:49 · 298 阅读 · 0 评论 -
leetcode38. Count and Say
count-and-say序列是前五个项的整数序列,如下所示:12. 113. 214. 12115. 1112211 读取为或。读取为或。读取为,然后或。 "one 1" 1111 "two 1s" 2121 "one 2 one 1" 1211给定一个整数n,生成count-and-say序列的第n项。 注意:整数序列的每一项都将以字符串形式表示。例1:输入: 1 输...原创 2018-06-08 14:41:13 · 254 阅读 · 0 评论 -
leetcode35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0思路:遍历比较数值,返回对应...原创 2018-06-04 17:57:41 · 316 阅读 · 0 评论 -
leetcode28. 实现strStr()
实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2示例 2:输入: haystack = "aaaaa", needle = "bba"输出...原创 2018-06-04 17:42:17 · 251 阅读 · 0 评论 -
leetcode27. 移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。...原创 2018-06-04 17:36:12 · 236 阅读 · 0 评论 -
leetcode26. 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [...原创 2018-06-04 17:28:31 · 488 阅读 · 0 评论 -
leetcode21. 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路:每次判断两个链表的头部小的数值,存取小的,并让该链表往后移动。注意:注意链表走完,为空的情况即可。遇到的问题:一开始不太理解链表,返回end,总是只有提取的最后...原创 2018-06-04 11:23:15 · 539 阅读 · 0 评论 -
leetcode20. 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: fa...原创 2018-06-03 17:38:07 · 219 阅读 · 0 评论 -
leetcode14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释:不存在公共前缀。说明:所有输入只包含小写字母 a-z 。思路:每个字符原创 2018-06-03 12:26:31 · 351 阅读 · 0 评论 -
leetcode13. 罗马数字转整数
罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。字符 数值I 1 V 5X 10 L 50C 100 D 500M ...原创 2018-06-03 11:21:27 · 281 阅读 · 0 评论 -
leetcode9. 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入:121输出:true示例 2:输入:-121输出:false示例 3:输入:10输出:false进阶:你能不将整数转为字符串来解决这个问题吗?思路:转换成字符串利用reveser()函数和equals()函数,先存储取反的字符串,再比较是否相等即可。 本题负数一定不是...原创 2018-06-03 10:28:18 · 214 阅读 · 0 评论 -
leetcode7.反转整数
给定一个 32 位有符号整数,将整数中的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。思路:转换成String利用reverse()函数取反,然后完成后再转换成int...原创 2018-06-03 10:07:55 · 785 阅读 · 0 评论 -
leetcode1.两数之和
给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:class Solution { public int[] twoSum(int[] nums, int target) { int[] x = new int[2]; for(int i=0;i<nums.length;i+...原创 2018-06-02 22:42:36 · 161 阅读 · 0 评论