LeetCode
mdzzname
这个作者很懒,什么都没留下…
展开
-
LeetCode: 盛最多水的容器
给定n个非负整数a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画n条垂直线,垂直线i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(...原创 2019-05-02 18:57:49 · 145 阅读 · 0 评论 -
LeetCode: 旋转链表
给定一个链表,旋转链表,将链表每个节点向右移动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 步: 4->...原创 2019-05-08 09:30:59 · 110 阅读 · 0 评论 -
LeetCode: 矩阵置0
给定一个mxn的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]...原创 2019-05-13 11:05:08 · 409 阅读 · 0 评论 -
LeetCode: 二叉树的层次遍历 和
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]/** * Definition for a binary tre...原创 2019-07-12 19:28:49 · 110 阅读 · 0 评论 -
LeetCode: 单值二叉树
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回true;否则返回 false。示例 1:输入:[1,1,1,1,1,null,1]输出:true示例 2:输入:[2,2,2,5,2]输出:false提示:给定树的节点数范围是[1, 100]。每个节点的值都是整数,范围为[0, 99]。/**...原创 2019-07-12 19:40:45 · 133 阅读 · 0 评论 -
LeetCode: 合并两个有序数组
给定两个有序整数数组nums1 和 nums2,将 nums2 合并到nums1中,使得num1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = ...原创 2019-07-10 19:19:54 · 137 阅读 · 0 评论 -
LeetCode: 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){...原创 2019-07-10 20:09:23 · 109 阅读 · 0 评论 -
LeetCode: 旋转图像
给定一个 n×n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2], [9,6,3]...原创 2019-07-24 20:22:30 · 187 阅读 · 0 评论 -
1122. 数组的相对排序
给你两个数组,arr1 和arr2,arr2中的元素各不相同arr2 中的每个元素都出现在arr1中对 arr1中的元素进行排序,使 arr1 中项的相对顺序和arr2中的相对顺序相同。未在arr2中出现过的元素需要按照升序放在arr1的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9...原创 2019-07-21 20:03:41 · 667 阅读 · 0 评论 -
LeetCode: 从前序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7/** * Definition for a binary tree n...原创 2019-08-19 22:08:58 · 167 阅读 · 0 评论 -
LeetCode: 从中序与后序遍历序列构造二叉树
根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7/** * Definition for a binary tree ...原创 2019-08-19 22:25:53 · 185 阅读 · 0 评论 -
LeetCode: 子集
给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]class Solution {public: // n 个元素的子集个数共 2...原创 2019-08-23 22:11:09 · 116 阅读 · 0 评论 -
深入解析二分查找
在写代码的过程中经常会用到二分查找,不论是刷题还是写业务代码。虽然它的思想简洁,作用强大,但不一定你就能很好的掌握它。过去一直被二分查找和二分查找的变种的边界条件困扰,今天一并整理他们的边界条件。1. 二分查找int binary_search_equal(int *nums, int size, int target){ int temp; int left = 0, righ...原创 2019-05-10 16:53:20 · 381 阅读 · 0 评论 -
LeetCode: 搜索二维矩阵
编写一个高效的算法来判断mxn矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。示例1:输入:matrix = [ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]target = 3输出: true示例2:输...原创 2019-05-08 08:54:18 · 155 阅读 · 0 评论 -
LeetCode: 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。class Solution {p...原创 2019-05-02 19:26:16 · 116 阅读 · 0 评论 -
LeetCode: 三数之和
给定一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c ,使得a + b + c =0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]这道题其实不难,一定...原创 2019-05-03 12:32:46 · 141 阅读 · 0 评论 -
LeetCode: 最接近的三数之和
给定一个包括n个整数的数组nums和 一个目标值target。找出nums中的三个整数,使得它们的和与target最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).class Solution {p...原创 2019-05-03 14:15:42 · 104 阅读 · 0 评论 -
LeetCode: 四数之和
给定一个包含n个整数的数组nums和一个目标值target,判断nums中是否存在四个元素a,b,c和d,使得a+b+c+d的值与target相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合...原创 2019-05-03 14:33:06 · 167 阅读 · 0 评论 -
LeetCode: 括号生成
给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n=3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]冥冥中感觉到应该用递归,但是就是提炼不出递归的不变式,递归真是个简单而强大的东西,不过要真正掌握却很难!class Solutio...原创 2019-05-03 15:05:22 · 131 阅读 · 0 评论 -
LeetCode: 两数相加
给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2019-04-28 23:30:44 · 92 阅读 · 0 评论 -
LeetCode:在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组nums,和一个目标值target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是O(logn) 级别。如果数组中不存在目标值,返回[-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例2:输入: nums = [5,7,7,8,8,1...原创 2019-05-08 12:20:03 · 171 阅读 · 0 评论 -
LeetCode:字符串转换整数 (atoi)
请你来实现一个atoi函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可...原创 2019-05-01 11:21:53 · 154 阅读 · 0 评论 -
LeetCode: 中序遍历
给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]进阶:递归算法很简单,你可以通过迭代算法完成吗?/** * 递归版本 * Definition for a binary tree node. * struct TreeNode { * int val;...原创 2019-05-01 12:08:46 · 309 阅读 · 0 评论 -
LeetCode: 前序遍历
给定一个二叉树,返回它的前序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶:递归算法很简单,你可以通过迭代算法完成吗?/** * 递归版本 * Definition for a binary tree node. * struct TreeNode { * in...原创 2019-05-01 12:17:44 · 366 阅读 · 0 评论 -
LeetCode: 下一个排列
实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3→1,3,23,2,1→1,2,31,1,5→1,5,1首先,我们观察到对于任何给定序列的降序,没有可能的下一个更...原创 2019-05-06 16:42:02 · 188 阅读 · 0 评论 -
LeetCode: 路径总和 II
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ ...原创 2019-08-21 22:16:11 · 121 阅读 · 0 评论