- 博客(518)
- 收藏
- 关注
原创 【两次过】Leetcode 23. 合并K个升序链表
给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。
2022-09-27 08:53:10
143
1
原创 【两次过】Leetcode 86. 分割链表
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。
2022-09-26 08:55:08
221
原创 【两次过】Leetcode 27.移除元素
给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如,函数返回的新...
2021-11-02 09:34:30
161
原创 【两次过】Leetcode 34.在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。进阶:你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入...
2021-10-28 09:20:17
118
原创 【两次过】Leetcode 654.最大二叉树
给定一个不含重复元素的整数数组nums。一个以此数组直接递归构建的最大二叉树定义如下:二叉树的根是数组nums中的最大元素。 左子树是通过数组中最大值左边部分递归构造出的最大二叉树。 右子树是通过数组中最大值右边部分递归构造出的最大二叉树。返回有给定数组nums构建的最大二叉树。示例 :输入:nums = [3,2,1,6,0,5]输出:提示:1 <= nums.length <= 1000 0 <= nums[i] &...
2021-07-01 16:05:04
123
原创 【两次过】Leetcode 114.二叉树展开为链表
给你二叉树的根结点root,请你将它展开为一个单链表:展开后的单链表应该同样使用TreeNode,其中right子指针指向链表中下一个结点,而左子指针始终为null。 展开后的单链表应该与二叉树先序遍历顺序相同。示例 1:输入:root = [1,2,5,3,4,null,6]输出:[1,null,2,null,3,null,4,null,5,null,6]解题思路:我们尝试给出这个函数的定义:给 flatten 函数输入一个节点 root,那么以 roo...
2021-07-01 15:15:08
110
原创 【两次过】Leetcode 116.填充二叉树节点的右侧指针
给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为NULL。初始状态下,所有next 指针都被设置为NULL。进阶:你只能使用常量级额外空间。 使用递归解题也符合要求,本题中递归程序占...
2021-06-24 15:39:13
105
原创 【两次过】LeetCode257:二叉树的所有路径
*给定一个二叉树,返回所有从根节点到叶子节点的路径。*说明:叶子节点是指没有子节点的节点。*示例:*输入:*1*/\*23*\*5*输出:["1->2->5","1->3"]*解释:所有根节点到叶子节点的路径为:1->2->5,1->3解题思路:答案要求所有达到根结点的路径的字符串表示,这是一个典型的回溯问题。回溯在于,走到一个叶子结点,要查...
2020-09-03 09:51:30
137
原创 【两次过】Leetcode 204: 计数质数
*统计所有小于非负整数n的质数的数量。**示例:**输入:10*输出:4*解释:小于10的质数一共有4个,它们是2,3,5,7。解题思路:不能想当然采用一个一个的去处理,否则时间复杂度为O(n^2)。首先从 2 开始,我们知道 2 是一个质数,那么 2 × 2 = 4, 3 × 2 = 6, 4 × 2 = 8... 都不可能是质数了。然后我们发现 3 也是质数,那么 3 × 2 = 6, 3 × 3 = 9,...
2020-08-31 20:24:02
124
原创 【两次过】Leetcode 22. 括号生成
数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]解题思路:这种列出所有结果的题目一般采用dfs。具体见代码解析:class Solution { public List<String> generateP...
2020-07-15 08:26:44
142
原创 【两次过】Leetcode 6: Z 字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。比如输入字符串为"LEETCODEISHIRING"行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例1:输入:...
2020-07-10 09:52:17
119
原创 【一次过】Leetcode 38. 外观数列
给定一个正整数 n(1 ≤n≤ 30),输出外观数列的第 n 项。注意:整数序列中的每一项将表示为一个字符串。「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:1. 12. 113. 214. 12115. 111221第一项是数字 1描述前一项,这个数是 1 即 “一个 1 ”,记作 11描述前一项,这个数是 11 即 “两个 1 ” ,记作 21描述前一项,这个数是 21 即 “一个 ...
2020-07-04 20:09:40
263
原创 【两次过】Lintcode 772. 错位词分组
给一字符串数组, 将 错位词(指相同字符不同排列的字符串) 分组样例例1:输入:["eat","tea","tan","ate","nat","bat"]输出:[["ate","eat","tea"], ["bat"], ["nat","tan"]]例2:输入:["eat","nowhere"]输出:[["eat"], ["nowhere"]]注意事项所有的输入均为小写字母解题思路:利用HashMap<String, List<Str
2020-06-10 22:18:18
210
原创 【一次过】Lintcode 379. 将数组重新排序以构造最小值
给定一个整数数组,请将其重新排序,以构造最小值。样例样例 1:输入:[2, 1]输出:[1, 2]解释:通过将数组重新排序,可构造 2 个可能性数字: 1+2=12 2+1=21其中,最小值为 12,所以,将数组重新排序后,该数组变为 [1, 2]。样例 2:输入:[3, 32, 321]输出:[321, 32, 3]...
2019-07-14 11:29:19
219
原创 【两次过】Lintcode 197. 排列序号
给出一个不含重复数字的排列,求这些数字的所有排列按字典序排序后该排列的编号。其中,编号从1开始。样例样例 1:输入:[1,2,4]输出:1样例 2:输入:[3,2,1]输出:6解题思路:需要知道一个算法:康托展开。原理介绍**X = A[0] * (n-1)! + A[1] * (n-2)! + … + A[n-1] * 0! **A[i] 指的是位...
2019-07-14 11:05:18
190
原创 查找当前薪水详情以及部门编号dept_no
题目描述查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_noCREATE TABLE `dept_manager` (`dept_no` char(4) NOT NULL,`emp_no` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PR...
2019-07-09 21:40:50
212
原创 【两次过】Lintcode 191. 乘积最大子序列
找出一个序列中乘积最大的连续子序列(至少包含一个数)。样例样例 1:输入:[2,3,-2,4]输出:6样例 2:输入:[-1,2,4,1]输出:8解题思路1:常规思路两遍遍历,时间复杂度O(n^2)public class Solution { /** * @param nums: An array of integers *...
2019-07-06 10:37:25
176
原创 【两次过】【2019招行】漂流船问题
公司组织团建活动,到某漂流圣地漂流,现有如下情况:员工各自体重不一,第i个人的体重为people[i],每艘漂流船可以承载的最大重量为limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为limit。为节省开支,麻烦帮忙计算出载到每一个人所需的最小船只数(保证每个人都能被船载)。输入描述:第一行输入参与漂流的人员对应的体重数组,第二行输入漂流船承载的...
2019-07-03 20:17:19
727
原创 文件的读入与写入
一、文件的读取1、按字符读取如果我们要取的数据基本单位是单个字符,那么用这种方法读取文件就比较适合。比如:txt文件如下,我们需要取出其中的每一个字母存入一个数组中。也就是一次性读取文件中所有字符。利用FileReader中的read()方法。FileReader.read(char[] cbuf),参数——cbuf是目标缓冲区;返回——读取的字符串数量,如果已达到末尾则返回-1。...
2019-07-02 15:50:42
3775
原创 【两次过】Lintcode 187. 加油站
在一条环路上有N个加油站,其中第i个加油站有汽油gas[i],并且从第_i_个加油站前往第_i_+1个加油站需要消耗汽油cost[i]。你有一辆油箱容量无限大的汽车,现在要从某一个加油站出发绕环路一周,一开始油箱为空。求可环绕环路一周时出发的加油站的编号,若不存在环绕一周的方案,则返回-1。样例样例 1:输入:gas[i]=[1,1,3,1],cost[i]=[2,2...
2019-07-01 10:59:06
168
原创 【三次过】Lintcode 363. 接雨水
给出n个非负整数,代表一张X轴上每个区域宽度为1的海拔图, 计算这个海拔图最多能接住多少(面积)雨水。样例样例 1:输入: [0,1,0]输出: 0样例 2:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6挑战O(n) 时间, O(1) 空间O(n) 时间, O(n) 空间也可以接受解题思路:这道题还可以用单调栈的...
2019-06-30 21:19:55
188
原创 【一次过】Lintcode 150. 买卖股票的最佳时机 II
给定一个数组prices表示一支股票每天的价格.你可以完成任意次数的交易, 不过你不能同时参与多个交易 (也就是说, 如果你已经持有这支股票, 在再次购买之前, 你必须先卖掉它).设计一个算法求出最大的利润.样例样例 1:输入: [2, 1, 2, 0, 1]输出: 2解释: 1. 在第 2 天以 1 的价格买入, 然后在第 3 天以 2 的价格卖出, 利润...
2019-06-29 10:08:27
192
原创 【两次过】大整数字符串相乘
给定两个数字(0-9)字符串(长度不限)求它们的乘积。输入描述:第一行为第一个数字字符串第二行为第二个数字字符串输出描述:乘积字符串示例1输入12320输出2460解题思路:直接用整数乘显然不行,这里采用math包下的BigInteger类,原理就是直接通过字符串按位乘,可进行无限位的乘法。import java.util.*;imp...
2019-06-19 20:58:55
360
原创 【一次过】已知 sqrt (2)约等于 1.414,要求不用数学库,求 sqrt (2)精确到小数点后 10 位。
已知 sqrt(2)约等于 1.414,那么就可以在(1.41, 1.42)区间做二分.设l = 1.41, r = 1.42, mid = (r+l)/2循环退出条件:r-l <= 精度public class Main { public static void main(String[] args) { double l = 1.41; ...
2019-06-18 19:44:59
1302
原创 写一个java死锁程序
只需要模拟持有并请求,即线程0获得A锁后又去请求B锁,线程1获得B锁后又去请求A锁,由于循环依赖导致彼此一直在等待。DeadLock.javapublic class DeadLock implements Runnable{ private String str1; //锁A private String str2; //锁B public D...
2019-06-17 14:42:58
435
原创 启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,19,20…
启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,19,20….以此类推, 直到打印到75.解题思路1:最常规死板的做法,缺点是有多少中线程同步就需要建多少中函数,所以本题需要建3个函数,其次对于打印到75这点需要自己算好循环次数,本题每种线程循环5次...
2019-06-02 21:01:12
6338
4
原创 设计四个线程,其中两个线程每次对变量i加1,另外两个线程每次对i减1.
说明:MyObj类为功能函数(加1和减1)以及变量i的存储地方。这里采用AtomicInteger类来保证一致性假设每个线程处理3次public class Main { public static void main(String[] args){ MyObj myObj = new MyObj(); for(int i=0; i<...
2019-06-02 20:31:39
3420
原创 【两次过】【2018唯品会】字符串组合
输入一个字符串,输出该字符串中相邻字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、bc、abc。(注意:输出的组合需要去重)(40分)输入描述:一个字符串输出描述:一行,每个组合以空格分隔,相同长度的组合需要以字典序排序,且去重。示例1输入bac输出a b c ac ba bac解题思路1:类似Lintcode 17. 子...
2019-05-30 21:10:35
145
原创 【两次过】【二分搜索】【2018爱奇艺】最后一位
题目描述牛牛选择了一个正整数X,然后把它写在黑板上。然后每一天他会擦掉当前数字的最后一位,直到他擦掉所有数位。 在整个过程中,牛牛会把所有在黑板上出现过的数字记录下来,然后求出他们的总和sum.例如X = 509, 在黑板上出现过的数字依次是509, 50, 5, 他们的和就是564.牛牛现在给出一个sum,牛牛想让你求出一个正整数X经过上述过程的结果是sum.输入描述:输入包括...
2019-05-22 09:24:37
209
原创 堆排序
直接在原数组上进行排序,时间复杂度O(nlogn),空间复杂度O(1)前置知识:由于直接从数组排序,所以序号从0开始,可以得到parent(i) = (i-1)/2left child(i) = 2*i+1right child(i) = 2*i+2解题分为两个步骤:(1)先将原数组进行heapify,变成一个最大堆。也就是从第一个非叶子节点(即最后节点的父节点)开始向上遍...
2019-05-21 21:37:59
147
原创 【两次过】【2018爱奇艺】幸运子序列
题目描述牛牛得到一个长度为n的整数序列V,牛牛定义一段连续子序列的幸运值为这段子序列中最大值和次大值的异或值(次大值是严格的次大)。牛牛现在需要求出序列V的所有连续子序列中幸运值最大是多少。请你帮帮牛牛吧。输入描述:第一行一个整数n,即序列的长度。(2<= n <= 100000)第二行n个数,依次表示这个序列每个数值V[i], (1 ≤ V[i] ≤ 10^8)且保证...
2019-05-21 09:33:50
325
原创 【一次过】【2018爱奇艺】缺失的括号
题目描述一个完整的括号字符串定义规则如下:1、空字符串是完整的。2、如果s是完整的字符串,那么(s)也是完整的。3、如果s和t是完整的字符串,将它们连接起来形成的st也是完整的。例如,"(()())", ""和"(())()"是完整的括号字符串,"())(", "()(" 和 ")"是不完整的括号字符串。牛牛有一个括号字符串s,现在需要在其中任意位置尽量少地添加括号,将其转化为一个完...
2019-05-21 09:19:22
216
原创 【两次过】【2018爱奇艺】青草游戏
题目描述牛牛和羊羊都很喜欢青草。今天他们决定玩青草游戏。最初有一个装有n份青草的箱子,牛牛和羊羊依次进行,牛牛先开始。在每个回合中,每个玩家必须吃一些箱子中的青草,所吃的青草份数必须是4的x次幂,比如1,4,16,64等等。不能在箱子中吃到有效份数青草的玩家落败。假定牛牛和羊羊都是按照最佳方法进行游戏,请输出胜利者的名字。输入描述:输入包括t+1行。第一行包括一个整数t(1 ≤ ...
2019-05-20 10:34:42
176
原创 【两次过】【2018爱奇艺】红和绿
题目描述牛牛有一些排成一行的正方形。每个正方形已经被染成红色或者绿色。牛牛现在可以选择任意一个正方形然后用这两种颜色的任意一种进行染色,这个正方形的颜色将会被覆盖。牛牛的目标是在完成染色之后,每个红色R都比每个绿色G距离最左侧近。牛牛想知道他最少需要涂染几个正方形。如样例所示: s = RGRGR我们涂染之后变成RRRGG满足要求了,涂染的个数为2,没有比这个更好的涂染方案。输入描述:...
2019-05-20 09:27:42
187
原创 【一次过】【2018爱奇艺】回文素数
题目描述如果一个整数只能被1和自己整除,就称这个数是素数。如果一个数正着反着都是一样,就称为这个数是回文数。例如:6, 66, 606, 6666如果一个数字既是素数也是回文数,就称这个数是回文素数牛牛现在给定一个区间[L, R],希望你能求出在这个区间内有多少个回文素数。输入描述:输入包括一行,一行中有两个整数(1 ≤ L ≤ R ≤ 1000)输出描述:输出一个整...
2019-05-17 09:35:05
217
原创 【三次过】【2018爱奇艺】DNA序列
题目描述牛牛又从生物科研工作者那里获得一个任务,这次牛牛需要帮助科研工作者从DNA序列s中找出最短没有出现在DNA序列s中的DNA片段的长度。例如:s = AGGTCTA序列中包含了所有长度为1的('A','C','G','T')片段,但是长度为2的没有全部包含,例如序列中不包含"AA",所以输出2。输入描述:输入包括一个字符串s,字符串长度length(1 ≤ length ≤...
2019-05-16 10:39:00
269
原创 【一次过】【2018爱奇艺】循环数比较
题目描述对于任意两个正整数x和k,我们定义repeat(x, k)为将x重复写k次形成的数,例如repeat(1234, 3) = 123412341234,repeat(20,2) = 2020.牛牛现在给出4个整数x1, k1, x2, k2, 其中v1 = (x1, k1), v2 = (x2, k2),请你来比较v1和v2的大小。输入描述:输入包括一行,一行中有4个正整数x...
2019-05-16 10:02:40
174
原创 【三次过】【2018招行】寻找合法字符串
给出一个正整数n,请给出所有的包含n个'('和n个')'的字符串,使得'('和')'可以完全匹配。例如:'(())()','()()()' 都是合法的;'())()('是不合法的。请按照__字典序__给出所有合法的字符串。输入描述:输入为1个正整数输出描述:输出为所有合法的字符串,用英文逗号隔开示例1输入2输出(()),()()解...
2019-05-16 09:42:17
502
原创 【两次过】【2018招行】字符串是否由子串拼接
给出一个非空的字符串,判断这个字符串是否是由它的一个子串进行多次首尾拼接构成的。例如,"abcabcabc"满足条件,因为它是由"abc"首尾拼接而成的,而"abcab"则不满足条件。输入描述:非空字符串输出描述:如果字符串满足上述条件,则输出最长的满足条件的的子串;如果不满足条件,则输出false。示例1输入abcabc输出abc解题思路:...
2019-05-15 21:08:01
261
原创 【三次过】【2018网易】疯狂队列
题目描述小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列。有一次,n个学生在列队的时候,小易老师正好去卫生间了。学生们终于有机会反击了,于是学生们决定来一次疯狂的队列,他们定义一个队列的疯狂值为每对相邻排列学生身高差的绝对值总和。由于按照身高顺序排列的队列的疯狂值是最小的,他们当然决定按照疯狂值最大的顺序来进行列队。现在给出n个学生的身高,请...
2019-05-15 20:18:41
230
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人