lintcode
小马哥MAX
刷题记录BLOG
展开
-
【两次过】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 · 158 阅读 · 1 评论 -
【两次过】Leetcode 86. 分割链表
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。原创 2022-09-26 08:55:08 · 232 阅读 · 0 评论 -
【两次过】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 · 178 阅读 · 0 评论 -
【两次过】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 · 131 阅读 · 0 评论 -
【两次过】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 · 136 阅读 · 0 评论 -
【两次过】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 · 121 阅读 · 0 评论 -
【两次过】Leetcode 116.填充二叉树节点的右侧指针
给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为NULL。初始状态下,所有next 指针都被设置为NULL。进阶:你只能使用常量级额外空间。 使用递归解题也符合要求,本题中递归程序占...原创 2021-06-24 15:39:13 · 120 阅读 · 0 评论 -
【两次过】LeetCode257:二叉树的所有路径
*给定一个二叉树,返回所有从根节点到叶子节点的路径。*说明:叶子节点是指没有子节点的节点。*示例:*输入:*1*/\*23*\*5*输出:["1->2->5","1->3"]*解释:所有根节点到叶子节点的路径为:1->2->5,1->3解题思路:答案要求所有达到根结点的路径的字符串表示,这是一个典型的回溯问题。回溯在于,走到一个叶子结点,要查...原创 2020-09-03 09:51:30 · 149 阅读 · 0 评论 -
【两次过】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 · 139 阅读 · 0 评论 -
【两次过】Leetcode 22. 括号生成
数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例:输入:n = 3输出:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]解题思路:这种列出所有结果的题目一般采用dfs。具体见代码解析:class Solution { public List<String> generateP...原创 2020-07-15 08:26:44 · 155 阅读 · 0 评论 -
【两次过】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 · 132 阅读 · 0 评论 -
【一次过】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 · 279 阅读 · 0 评论 -
【两次过】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 · 230 阅读 · 0 评论 -
【简单】Lintcode 14: 二分查找
For a given sorted array (ascending order) and atargetnumber, find the first index of this number inO(log n)time complexity.If the target number does not exist in the array, return-1.Example...原创 2018-01-21 20:27:08 · 305 阅读 · 0 评论 -
【入门】LintCode452:删除链表中的元素
删除链表中等于给定值val的所有节点。样例给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。题目分析:1、由于题目所给节点是无空头节点的单向链表,所以需要考虑删除头节点的问题。2、题目第一个测试用例就是null,所以要先判断head是否为空,要把异常情况考虑完全。3原创 2018-01-13 20:46:03 · 354 阅读 · 0 评论 -
【入门】lintcode 632: 二叉树的最大节点
在二叉树中寻找值最大的节点并返回。样例给出如下一棵二叉树: 1 / \ -5 2 / \ / \0 3 -4 -5 返回值为 3 的节点。当然是递归。/** * Definition of TreeNode: * public class TreeNode { * public int val; * ...原创 2018-01-15 11:21:22 · 463 阅读 · 0 评论 -
【简单】Lintcode 1:A + B 问题
给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 注意事项你不需要从输入流读入数据,只需要根据aplusb的两个参数a和b,计算他们的和并返回就行。说明a和b都是 32位 整数么?是的我可以使用位运算符么?当然可以样例如果 a=1 并且 b=2,返回3解题思路:1、原创 2018-01-15 15:49:36 · 313 阅读 · 0 评论 -
【简单】Lintcode 55:Compare Strings
Compare two strings A and B, determine whether A contains all of the characters in B.The characters in string A and B are all Upper Case letters. NoticeThe characters of B in A are not nec原创 2018-01-30 20:56:34 · 193 阅读 · 0 评论 -
【简单】Lintcode 28:Search a 2D Matrix
Write an efficient algorithm that searches for a value in an m x n matrix.This matrix has the following properties:Integers in each row are sorted from left to right. The first integer of each ro...原创 2018-01-23 20:24:50 · 247 阅读 · 0 评论 -
【简单】Lintcode 30:Insert Interval
Given a non-overlapping interval list which is sorted by start point.Insert a new interval into it, make sure the list is still in order and non-overlapping (merge intervals if necessary).原创 2018-01-23 21:45:51 · 230 阅读 · 0 评论 -
【两次过】Lintcode 56:Two Sum
Given an array of integers, find two numbers such that they add up to a specific target number.The function twoSum should return indices of the two numbers such that they add up to the target, whe原创 2018-01-31 13:25:48 · 150 阅读 · 0 评论 -
【简单】Lintcode 60:Search Insert Position
Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order.You may assume NO duplicates in the array.原创 2018-01-31 14:47:42 · 148 阅读 · 0 评论 -
【简单】Lintcode 2:尾部的零
Write an algorithm which computes the number of trailing zeros in n factorial.Example11! = 39916800, so the out should be 2解题思路:传统解法是首先求出n!,然后计算末尾0的个数。(重复÷10,直到余数非0)该解法在输入的数字稍大时就会导致阶乘得原创 2018-01-16 19:44:17 · 204 阅读 · 0 评论 -
【一次过】Lintcode 6. 合并排序数组 II
Merge two given sorted integer arrayAandBinto a new sorted integer array.Have you met this question in a real interview?YesExampleA=[1,2,3,4]B=[2,4,5,6]return[1,2,2,3,4,4,5,6]解题思...原创 2018-01-16 20:57:26 · 198 阅读 · 0 评论 -
【简单】Lintcode 64:Merge Sorted Array
Given two sorted integer arrays A and B, merge B into A as one sorted array. NoticeYou may assume that A has enough space (size that is greater or equal to m + n) to hold additional elements原创 2018-01-31 22:08:33 · 150 阅读 · 0 评论 -
【一次过】Lintcode 8:旋转字符串
Given a string and an offset, rotate string by offset. (rotate from left to right)Have you met this question in a real interview?YesExampleGiven"abcdefg".offset=0 => "abcdefg"offset...原创 2018-01-17 16:27:20 · 308 阅读 · 0 评论 -
【简单】Lintcode 9:Fizz Buzz
Given number n. Print number from 1 to n. But:when number is divided by 3, print "fizz". when number is divided by 5, print "buzz". when number is divided by both 3 and 5, print "fizz buzz".Ex...原创 2018-01-17 16:59:59 · 244 阅读 · 0 评论 -
【两次过】Lintcode 13: 字符串查找
For a given source string and a target string, you should output thefirstindex(from 0) of target string in source string.If target does not exist in source, just return-1.ClarificationDo I...原创 2018-01-18 21:02:24 · 258 阅读 · 0 评论 -
【两次过】Lintcode 35:翻转链表
反转链表。例对于链表 1->2->3,反向链表是3->2->1解题思路: 新建三个指针,CUR指向当前需要反转的节点,预先指向CUR前一个节点(因为当CUR向后移动时会丢失前一个节点的数据),下一个指向CUR后一个节点,如图:执行一个节点的反转:然后移动到下一个节点,反转下一个节点:依次循环操作。/** * Defi...原创 2018-01-26 23:06:47 · 220 阅读 · 0 评论 -
【简单】Lintcode 39:恢复旋转排序数组
Given arotatedsorted array, recover it to sorted array in-place.ClarificationWhat is rotated array?For example, the orginal array is [1,2,3,4], The rotated array of it can be原创 2018-01-27 15:50:27 · 191 阅读 · 0 评论 -
【简单】Lintcode 44:Minimum Subarray
Given an array of integers, find the subarray with smallest sum.Return the sum of the subarray. NoticeThe subarray should contain one integer at least.ExampleFor [1原创 2018-01-28 20:56:37 · 271 阅读 · 0 评论 -
【两次过】Lintcode 41:最大子数组
给定一个整数数组,找到一个具有最大和的子数组,返回其最大和。样例样例1:输入:[−2,2,−3,4,−1,2,1,−5,3]输出:6解释:符合要求的子数组为[4,−1,2,1],其最大和为 6。样例2:输入:[1,2,3,4]输出:10解释:符合要求的子数组为[1,2,3,4],其最大和为 10。挑战要求时间复杂度为O(n)注意事项子数组最少包含...原创 2018-01-27 19:39:50 · 242 阅读 · 0 评论 -
【两次过】Lintcode 46:主元素
给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。样例样例 1:输入: [1, 1, 1, 1, 2, 2, 2]输出: 1样例 2:输入: [1, 1, 1, 2, 2, 2, 2]输出: 2挑战要求时间复杂度为O(n),空间复杂度为O(1)注意事项你可以假设数组非空,且数组中总是存在主元素。思路:...原创 2018-01-28 22:06:56 · 256 阅读 · 0 评论 -
【简单】Lintcode 66:Binary Tree Preorder Traversal
Given a binary tree, return the preorder traversal of its nodes' values.ExampleGiven: 1 / \ 2 3 / \4 5return [1,2,4,5,3].解题思路1:递归。/** * Definition of TreeNode: * clas...原创 2018-02-10 20:20:28 · 184 阅读 · 0 评论 -
【简单】Lintcode 53. 翻转字符串中的单词
给定一个字符串,逐个翻转字符串中的每个单词。说明单词的构成:无空格字母构成一个单词 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括 如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个解题思路1:1、先翻转整个字符串,再把每个单词反转,得到结果。class Solution {public: /* * @para...原创 2018-01-29 22:28:09 · 402 阅读 · 0 评论 -
【简单】Lintcode 82: Single Number
Given 2*n + 1 numbers, every numbers occurs twice except one, find it.ExampleGiven [1,2,2,1,3,4,3], return 4思路1:暴力求解,直接先排序后看异,虽然能AC,但这样做面试官是要打人的……class Solution {public: /** * @param A: An i...原创 2018-04-22 11:20:29 · 114 阅读 · 0 评论 -
【一次过】Lintcode 96: 链表划分
给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。 样例给定链表 1->4->3->2->5->2->null,并且 x=3返回 1->2->2->4->3->5->null.解题思路1: 可将整个链表先分离为两个小的链...原创 2018-05-01 17:33:23 · 191 阅读 · 0 评论 -
【简单】Lintcode 165:Merge Two Sorted Lists
Merge two sorted (ascending) linked lists and return it as a new sorted list. The new sorted list should be made by splicing together the nodes of the two lists and sorted in ascending order.Have...原创 2018-05-01 19:44:52 · 163 阅读 · 0 评论 -
【简单】Lintcode 80:Median
Given a unsorted array with integers, find the median of it.A median is the middle number of the array after it is sorted.If there are even numbers in the array, return the N/2-th number after sorted....原创 2018-04-21 19:18:57 · 246 阅读 · 0 评论 -
【一次过】Lintcode 112:删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素每个元素只留下一个。样例给出 1->1->2->null,返回 1->2->null给出 1->1->2->3->3->null,返回 1->2->3->null解题思路: 非常简单,用一个指针currentNode与他的下一个元素两者的值进行比较,若相同则删...原创 2018-05-03 17:22:29 · 156 阅读 · 0 评论