合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6 思路:是给两个有序链表排序的变形,主要在于为了提高速度,不要一个一个加上去,而是两个变成一个长的,再两个变成一个长的,知道最后成为一个长子串。 C++代码如下:/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* L...
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/ class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> res = new ArrayList();if(root == null){return res;}Queue<TreeNode> q = new LinkedList();//层次遍历,用队列实现q.offer(root); //将根节点入队TreeNode las...
https://leetcode-cn.com/problems/linked-list-cycle/ 经典解法是: 设置2个指针,一个慢指针,每次走一步;一个快指针,每次走2步; (证明快慢指针一定会相遇:) 当有环的时候,快指针先入环,当慢指针入环后,快慢指针就变成追赶问题了。 快指针追赶慢指针,每走一步它们的距离都会缩小1,直到相遇为止。 //ref: https://hit-alibaba.github.io/interview/basic/algo/Linked-List.html C++ 最容易想到的思路是存一个所有...
给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释: 2 = 1 + 1, 1 1 = 1。 示例 2: 输入: 10 输出: 36 解释: 10 = 3 + 3 + 4, 3 3 4 = 36。 说明: 你可以假设 n 不小于 2 且不大于 58。 思路描述:运用动态规划的思想。每一个数都可以拆分成两个数a b之和,取a和形成a的乘积最大的数和b和b的乘积最大的数相乘。 C++代码如下:class Solu...
题目: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] 思路: 首先将数组进行排序,因为需要的是三数和为0,所以先选择一个最小的数nums[0],因为是不需要相同的三元组和,所以nums[i]!=nu...
题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 代码: class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {//为什么要加&?int i,j;for...
解题思路: 定义快慢两个指针,当指针所指节点是同一个时,说明出现了环。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:bool hasCycle(ListNode *head) {if(!head || !(head->next)) return false;ListNode* fast = head;ListNode* slow = head;while(fast && fast->next){slow = slow->next;f...
参考1:https://github.com/huihut/interview 参考2:https://github.com/CyC2018/CS-Notes
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4->2->1->3输出: 1->2->3->4示例 2: 输入: -1->5->3->4->0输出: -1->0->3->4->5/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Solution { public:ListNode* sortList(ListNode* head) {if (!head || !head->next) return head;ListNo...
颠倒给定的 32 位无符号整数的二进制位。 示例 1: 输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。示例 2: 输入:11111111111111111111111111111101输出:10111111111111111111111111111111解释:输入的二进制串 1111111111...
Leetcode 88. 合并两个有序数组 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例: 输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3 输出: [1,2,2,3,5,6]class Solution { public:void merge(vector<int>& nums1, int...
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/目录题目描述题目大意解题方法mutex锁日期 题目地址:https://leetcode.com/problems/print-in-order/ 题目描述 Suppose we have a class: public class Foo {public void first() { print("first"); }public void second() { print("second"); }public void third() { print("third"); } }The same instance of Foo will be passed to three different thre...
题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]). Find the minimum element. You may assume no duplicate exists in the array. Example 1: Input: [3,4,5,1,2] Output: 1Example 2: Input: [4,5,6,7,0,1,2] Output: 0 分析: 给定了一个升序排序的数组且在某个点上进行了旋转。也就是[1,2,3,4,5]可能变成[3,...
给定一个二叉树(具有根结点 root), 一个目标结点 target ,和一个整数值 K 。 返回到目标结点 target 距离为 K 的所有结点的值的列表。 答案可以以任何顺序返回。 示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, K = 2输出:[7,4,1]解释: 所求结点为与目标结点(值为 5)距离为 2 的结点, 值分别为 7,4,以及 1注意,输入的 "root" 和 "target" 实际上是树上的结点。 上面的输入仅仅是对这些对象进行了...
Come from : [https://leetcode-cn.com/problems/valid-parentheses/] 20. Valid Parentheses 1.Question2.Answer3.大神解答4.我的收获 1.Question Given a string containing just the characters ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brackets. Open brackets must be closed in the correc...