剑指offer、leetcode
givmchickenblood
try to like it,do it
展开
-
LC 413. 等差数列划分
https://blog.csdn.net/qq_41855420/article/details/88721808如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,以下数列为等差数列:1, 3, 5, 7, 97, 7, 7, 73, -1, -5, -9以下数列不是等差数列。1, 1, 2, 5, 7数组 A 包含 N 个数,且索引从0开始。...转载 2019-04-03 15:32:06 · 108 阅读 · 0 评论 -
LC 853. 车队
N 辆车沿着一条车道驶向位于 target 英里之外的共同目的地。每辆车 i 以恒定的速度 speed[i] (英里/小时),从初始位置 position[i] (英里) 沿车道驶向目的地。一辆车永远不会超过前面的另一辆车,但它可以追上去,并与前车以相同的速度紧接着行驶。此时,我们会忽略这两辆车之间的距离,也就是说,它们被假定处于相同的位置。车队 是一些由行驶在相同位置、具有相同速度的车...原创 2019-04-03 17:33:25 · 136 阅读 · 0 评论 -
LC 72. 编辑距离 + LC 583. 两个字符串的删除操作 + LC 712. 两个字符串的最小ASCII删除和
https://www.cnblogs.com/masterlibin/p/5785092.html给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例 1:输入: word1 = “horse”, word2 = “ros”输出: 3解释:hor...转载 2019-04-04 08:48:20 · 223 阅读 · 0 评论 -
剑指offer 矩阵中的路径
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符...原创 2019-04-04 09:26:31 · 452 阅读 · 0 评论 -
LC 42. 接雨水 + LC 11. 盛最多水的容器
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6思路:定义左右指针:从左右两边进行遍历数...原创 2019-04-04 11:42:42 · 315 阅读 · 0 评论 -
剑指offer 最小的K个数
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。code方法1:利用PriorityQueue的最大堆public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<In...原创 2019-04-05 01:22:53 · 86 阅读 · 0 评论 -
15. 三数之和 + 16. 最接近的三数之和
1、15. 三数之和给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]方法1:回溯,超...原创 2019-04-09 21:23:54 · 209 阅读 · 0 评论 -
628. 三个数的最大乘积
给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积。示例 1:输入: [1,2,3]输出: 6示例 2:输入: [1,2,3,4]输出: 24注意:给定的整型数组长度范围是[3,104],数组中所有的元素范围是[-1000, 1000]。输入的数组中任意三个数的乘积不会超出32位有符号整数的范围。思路1: 比较慢//方法1 public int m...原创 2019-04-09 16:53:22 · 118 阅读 · 0 评论 -
牛客:数字翻转 + 143. 重排链表(快慢指针+合并链表+部分翻转链表;翻转链表)
1、数字翻转题目描述对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如:如果 X = 123,则rev(X) = 321;如果 X = 100,则rev(X) = 1.现在给出整数x和y,要求rev(rev(x) + rev(y))为多少?输入描述:输入为一行,x、y(1 ≤ x、y ≤ 1000),以空格隔开。输出描述:输出rev(rev(x) +...原创 2019-04-26 23:06:24 · 166 阅读 · 0 评论 -
70. 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶...原创 2019-04-26 23:12:01 · 110 阅读 · 0 评论 -
14:剪绳子(动态规划)
题目:有一段长度为n的绳子,把它剪成m段,例如n=8,把它剪成长度分别为2,3,3的三段,此时得到的最大乘积为18暴力方法:动态规划public int func(int n) { if (n < 2) return 0; if (n == 2) return 1; if (n == 3)...原创 2019-04-20 11:05:50 · 277 阅读 · 0 评论 -
44:数字序列中某一位的数字
题目:数字以01234567891011121314…的格式序列化到一个字符序列中,第5位(从0开始计数)是5,第13位是1,等等。求任意第n位对应的数字思路:public int func(int index) { if (index < 0) return -1; int digits = 1;//数字的位数 ...原创 2019-04-20 11:52:19 · 351 阅读 · 0 评论 -
46:把数字翻译成字符串(动态规划)
题目:把数字0翻译成a,1翻译成b,25翻译成z,例如12258有5种不同的翻译,请问一个数字一共有多少种翻译思路:public int func(int num) { if(num<0) return 0; return getCount(String.valueOf(num)); } private in...原创 2019-04-20 12:46:05 · 331 阅读 · 0 评论 -
LC 991. 坏了的计算器
在显示着数字的坏计算器上,我们可以执行以下两种操作:双倍(Double):将显示屏上的数字乘 2;递减(Decrement):将显示屏上的数字减 1 。最初,计算器显示数字 X。返回显示数字 Y 所需的最小操作数。示例 1:输入:X = 2, Y = 3输出:2解释:先进行双倍运算,然后再进行递减运算 {2 -> 4 -> 3}.示例 2:输入:X = 5, Y...原创 2019-04-03 13:41:12 · 183 阅读 · 0 评论 -
LC 650. 只有两个键的键盘
最初在一个记事本上只有一个字符 ‘A’。你每次可以对这个记事本进行两种操作:Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。Paste (粘贴) : 你可以粘贴你上一次复制的字符。给定一个数字 n 。你需要使用最少的操作次数,在记事本中打印出恰好 n 个 ‘A’。输出能够打印出 n 个 ‘A’ 的最少操作次数。示例 1:输入: 3输出:...原创 2019-04-03 12:31:02 · 339 阅读 · 0 评论 -
LC 167. 两数之和 II - 输入有序数组(2指针解决) + LC 1. 两数之和 + LC 653. 两数之和 IV - 输入 BST
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], tar...原创 2019-04-04 22:44:32 · 164 阅读 · 0 评论 -
剑指:旋转数组的最小数字 + 81. 在旋转数组中查找某个数 +189. 旋转数组 + 剑指:左旋转字符串 + 剑指:翻转单词顺序列
1、旋转数组的最小数字题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。解法1:注意旋转数组的特性:1.包含两个有序序列2.最小数一定位于第二个序列的开...原创 2019-04-26 16:53:36 · 142 阅读 · 0 评论 -
61. 旋转链表
1、61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步...原创 2019-04-26 20:21:13 · 82 阅读 · 0 评论 -
61. 旋转链表
1、61. 旋转链表给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步...原创 2019-04-26 20:21:40 · 79 阅读 · 0 评论 -
LeetCode 81. 搜索旋转排序数组 II(头条)
假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,0,1,2,2,5,6] 可能变为 [2,5,6,0,0,1,2] )。编写一个函数来判断给定的目标值是否存在于数组中。若存在返回 true,否则返回 false。示例 1:输入: nums = [2,5,6,0,0,1,2], target = 0输出: true示例 2:输入: nums = [2,5,6...原创 2019-04-02 16:36:06 · 101 阅读 · 0 评论 -
LeetCode 460. LFU Cache
题目:460. LFU Cache设计并实现最不经常使用(LFU)缓存的数据结构。它应该支持以下操作:get 和 put。get(key) - 如果键存在于缓存中,则获取键的值(总是正数),否则返回 -1。put(key, value) - 如果键不存在,请设置或插入值。当缓存达到其容量时,它应该在插入新项目之前,使最不经常使用的项目无效。在此问题中,当存在平局(即两个或更多个键具有相同...原创 2019-01-17 17:00:01 · 467 阅读 · 0 评论 -
206. 反转链表 + 234. 回文链表 + 92. 反转链表 II
1、206. 反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?public ListNode reverseList(ListNode head) { ListNode ne...原创 2019-04-17 12:43:26 · 127 阅读 · 0 评论 -
301. 删除无效的括号(BFS)
删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。说明: 输入可能包含了除 ( 和 ) 以外的字符。示例 1:输入: “()())()”输出: ["()()()", “(())()”]示例 2:输入: “(a)())()”输出: ["(a)()()", “(a())()”]示例 3:输入: “)(”输出: [""]思路: 广度优先 BFS/* * 广...原创 2019-04-22 13:44:57 · 831 阅读 · 0 评论 -
深度优先:827. 最大人工岛 + 京东2019春招笔试(着火)+695. 岛屿的最大面积
1、827. 最大人工岛(深度优先)在二维地图上, 0代表海洋, 1代表陆地,我们最多只能将一格 0 海洋变成 1变成陆地。进行填海之后,地图上最大的岛屿面积是多少?(上、下、左、右四个方向相连的 1 可形成岛屿)示例 1:输入: [[1, 0], [0, 1]]输出: 3解释: 将一格0变成1,最终连通两个小岛得到面积为 3 的岛屿。示例 2:输入: [[1, 1], [1, 0...原创 2019-04-17 18:36:22 · 235 阅读 · 0 评论 -
458. 可怜的小猪
1、458. 可怜的小猪有 1000 只水桶,其中有且只有一桶装的含有毒药,其余装的都是水。它们从外观看起来都一样。如果小猪喝了毒药,它会在 15 分钟内死去。问题来了,如果需要你在一小时内,弄清楚哪只水桶含有毒药,你最少需要多少只猪?回答这个问题,并为下列的进阶问题编写一个通用算法。进阶:假设有 n 只水桶,猪饮水中毒后会在 m 分钟内死亡,你需要多少猪(x)就能在 p 分钟内找出 “...原创 2019-04-17 15:46:47 · 193 阅读 · 0 评论 -
463. 岛屿的周长
给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域。网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。示例 :...原创 2019-04-17 20:51:08 · 134 阅读 · 0 评论 -
473. 火柴拼正方形(回溯)
还记得童话《卖火柴的小女孩》吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法。不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到。输入为小女孩拥有火柴的数目,每根火柴用其长度表示。输出即为是否能用所有的火柴拼成正方形。示例 1:输入: [1,1,2,2,2]输出: true解释: 能拼成一个边长为2的正方形,每边两根火柴。示例 2:输入: [3,3...原创 2019-04-22 11:18:06 · 535 阅读 · 0 评论 -
32. 最长有效括号(hard)
给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”public int longestValidParentheses(String s) { Stack<Integer...原创 2019-04-22 16:38:56 · 104 阅读 · 0 评论 -
1003. 检查替换后的词是否有效
给定有效字符串 “abc”。对于任何有效的字符串 V,我们可以将 V 分成两个部分 X 和 Y,使得 X + Y(X 与 Y 连接)等于 V。(X 或 Y 可以为空。)那么,X + “abc” + Y 也同样是有效的。例如,如果 S = “abc”,则有效字符串的示例是:“abc”,“aabcbc”,“abcabc”,“abcabcababcc”。无效字符串的示例是:“abccba”,“ab”...原创 2019-04-22 23:21:42 · 318 阅读 · 0 评论 -
47:礼物的最大值(动态规划)
题目:m*n的棋盘中,每个格子都放一个礼物,每个礼物有一个价值。从(0,0)开始出发,只能向右,或者向下走,直到走到右下角,求礼物的最大价值思路:![在这里插入图片描述](https://img-blog.csdnimg.cn/20190420132748945.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow...原创 2019-04-20 13:29:59 · 438 阅读 · 0 评论