![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
每日编程
LYue123
这个作者很懒,什么都没留下…
展开
-
每日编程(44)
题目:最长回文子串题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”分析:这算是我比较不喜欢做的题目之一了,以前也做过种种类似的题目,今天这个题目的关键次就是,最长,回文,子串,最长的实现就是每次...原创 2019-04-27 20:04:48 · 337 阅读 · 1 评论 -
每日编程(33)
题目:最长湍流子数组题目描述:978. 最长湍流子数组 显示英文描述用户通过次数 196用户尝试次数 229通过次数 200提交次数 567题目难度 Medium当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组:若 i <= k < j,当 k 为奇数时, A[k] > A[k+1],且当 k 为偶数时,A[k...原创 2019-03-16 20:30:23 · 204 阅读 · 0 评论 -
每日编程(32)--剑指offer
题目:从尾到头打印链表题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。分析:很经典的一道题,方法也有很多,借助一个切片储存链表的值再更改的切片的顺序;递归遍历链表,直到最后一个链表返回输出代码:func printLinlist(node *ListNode)[]int{ arr:=[]int{} if node==nil{ return arr }...原创 2019-03-15 21:11:48 · 156 阅读 · 0 评论 -
每日编程--(31)
题目:分配房间题目描述:有n个房间,现在i号房间里的人需要被重新分配,分配的规则是这样的:先让i号房间里的人全都出来,接下来按照 i+1, i+2, i+3, … 的顺序依此往这些房间里放一个人,n号房间的的下一个房间是1号房间,直到所有的人都被重新分配。现在告诉你分配完后每个房间的人数以及最后一个人被分配的房间号x,你需要求出分配前每个房间的人数。数据保证一定有解,若有多解输出任意一个解。...原创 2019-03-14 20:34:05 · 425 阅读 · 0 评论 -
每日编程(二十三)--strings.Builder的使用
题目:第k个排列题目描述:给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:“123”“132”“213”“231”“312”“321”给定 n 和 k,返回第 k 个排列。说明:给定 n 的范围是 [1, 9]。给定 k 的范围是[1, n!]。示例 1:输入: n = 3,...原创 2019-03-04 20:29:44 · 2510 阅读 · 0 评论 -
每日编程--leetcode127周竞赛
这次的题目真的是一点都不难,但由于本人太菜了,只做出三道题目1:K 次取反后最大化的数组和题目描述:给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。)以这种方式修改数组后,返回数组可能的最大和。示例 1:输入:A = [4,2,3], K = 1输出:5解...原创 2019-03-10 13:12:22 · 310 阅读 · 0 评论 -
每日编程(二十七)--构造二叉树
题目:从前序与中序遍历序列构造二叉树题目描述:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7分析:代码:/** * Definition for a bin...原创 2019-03-06 20:10:46 · 176 阅读 · 0 评论 -
每日编程(二十六)
题目:下一个排列题目描述:实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。1,2,3 → 1,3,23,2,1 → 1,2,31,1,5 → 1,5,1分析:很明显从后想前遍历,直到...原创 2019-03-06 19:20:30 · 203 阅读 · 0 评论 -
每日编程(二十八)
题目:最长公共前缀题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。分析:暴力法,直接以第一个为参...原创 2019-03-08 20:28:35 · 224 阅读 · 0 评论 -
每日编程(二十二)--二叉树
题目:二叉搜索树的最近公共祖先题目描述:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]...原创 2019-03-02 21:07:23 · 189 阅读 · 0 评论 -
每日编程(34)--leetcode128周竞赛
没错我又参加了第128场竞赛,这次也是三道题,最后一题总是超时,暴力不能解决问题了题目:十进制整数的补码题目描述:每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 “101”,11 可以用二进制 “1011” 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。二进制的补码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 “101” 的...原创 2019-03-17 13:18:30 · 851 阅读 · 10 评论 -
每日编程--(三十)
题目:验证栈序列题目描述:给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), pus...原创 2019-03-12 20:16:13 · 178 阅读 · 0 评论 -
每日编程(43)---二叉树
题目:二叉树的层次遍历 II题目描述:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]分析:二叉树层析遍历,借助队列,每次要将当前队列遍历...原创 2019-04-15 09:26:57 · 478 阅读 · 0 评论 -
每日编程(42)
题目:卡牌分组题目描述:用户通过次数 148用户尝试次数 181通过次数 152提交次数 611题目难度 Easy给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3...原创 2019-04-02 08:26:23 · 221 阅读 · 0 评论 -
每日编程(39)
题目:转置矩阵题目描述:给定一个矩阵 A, 返回 A 的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]分析:这个题很明显直接反过来遍历就好...原创 2019-03-28 09:28:04 · 176 阅读 · 0 评论 -
每日编程(41)
分隔链表题目描述:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。然后指针后移寻找下一个位置示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5分析:这是一道操作链...原创 2019-04-01 08:31:56 · 160 阅读 · 0 评论 -
每日编程(40)
题目:767. 重构字符串题目描述:给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行,返回空字符串。示例 1:输入: S = “aab”输出: “aba”示例 2:输入: S = “aaab”输出: “”注意:S 只包含小写字母并且长度在[1, 500]区间内。分析:首先通过一个字典对字符串中的所有进行一个整合,然后...原创 2019-03-30 21:26:40 · 227 阅读 · 0 评论 -
每日编程(36)
题目:836. 矩形重叠题目描述:矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:tr...原创 2019-03-22 21:00:54 · 200 阅读 · 0 评论 -
每日编程(35)--leetcode
题目:可被K整除的字数组题目描述:给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3],...原创 2019-03-19 10:56:08 · 475 阅读 · 0 评论 -
每日编程(38)
题目:使数组唯一的最小增量题目描述:给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]。示例 2:输入:[3,2,1,2,1,7]输出:6解释:经过 6 次 move 操作,数组将变为 [3, 4, 1,...原创 2019-03-26 07:44:33 · 177 阅读 · 0 评论 -
每日编程(37)--leetcode129周赛
题目:将数组分成和相等的三个部分题目描述:1020. 将数组分成和相等的三个部分 显示英文描述用户通过次数 321用户尝试次数 401通过次数 324提交次数 883题目难度 Easy给定一个整数数组 A,只有我们可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果我们可以找出索引 i+1 < j 且满足 (A[0] + A[1] + ...原创 2019-03-24 18:15:46 · 289 阅读 · 0 评论 -
每日编程(二十五)--求交集
题目:两个数组的交集题目描述:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]分析:很明显要求不能重复,所以我们只需要记住一个数组中有什么,而不需要记住有多少个代码:func i...原创 2019-03-05 20:30:03 · 340 阅读 · 0 评论 -
每日编程(二十四)--四数之和
题目:四数之和题目描述:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足...原创 2019-03-05 20:21:39 · 298 阅读 · 0 评论 -
每日编程(五)——leetcode刷题
题目:. 最后一个单词的长度描述:给定一个仅包含大小写字母和空格 ' ' 的字符串,返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。说明:一个单词是指由字母组成,但不包含任何空格的字符串。示例:输入: "Hello World"输出: 5分析:比较简单了,很明显字符串的分割,去最后一个字符串,计算长度即可,但是却遇到了一个小问题,就是最后一个是空格的...原创 2019-01-16 21:17:04 · 233 阅读 · 2 评论 -
每日编程(十)--leetcode刷题
题目:将有序数组转换为二叉搜索树题目描述:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 /...原创 2019-01-27 19:52:46 · 182 阅读 · 0 评论 -
每日编程(九)--leetcode
题目:相同的树题目描述:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。分析:其实就是考察二叉树的基本操作,没什么难度,上代码代码:/** * Definition for a binary tree node. * type TreeNode struct { * Val int * ...原创 2019-01-21 19:48:33 · 151 阅读 · 0 评论 -
每日编程(四)
题目:搜索插入位置题目描述:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。分析:比较清楚的是,首先应该先确定,目标值在不在切片中,如果在返回下标即可,不在的话,就要插入并返回下标,题目比较简单,上代码func searchInsert(nums []int, target in...原创 2019-01-15 21:47:03 · 159 阅读 · 0 评论 -
每日编程(八)--leetcode
题目:合并两个有序数组题目描述:给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,...原创 2019-01-20 19:41:10 · 156 阅读 · 0 评论 -
每日编程(七)--leetcode
题目:删除排序链表中的重复元素题目描述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。分析:题目比较简单,主要就是考察对链表指针的一个简单运用,删除重复元素,只要避免新链表中的最后一个元素与给定链表中的下一个元素不相等即可上代码:/** * Definition for singly-linked list. * type ListNode struct { ...原创 2019-01-19 20:15:24 · 143 阅读 · 0 评论 -
每日编程(三)
题目:移除元素给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且...原创 2019-01-14 19:05:36 · 184 阅读 · 0 评论 -
每日编程(二)
题目一:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。分析:题目是比较简单的基础题,以前用C++和php都做过类似的题目,通常的直观的思想都是变成字符转之后逆序进行比较,这种方法比较暴力,需要额外的空间,空间复杂度比较高,根据题目要求是一个整数,所以是否可以通过将整数逐步分解并合成一个新的整数,进行比较,但是这种方法就要考虑一个一些特殊的情况,整数溢出...原创 2019-01-13 19:26:21 · 160 阅读 · 0 评论 -
每日编程(六)--leetcode
题目:两数相加题目描述:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4...原创 2019-01-17 22:12:36 · 175 阅读 · 0 评论 -
每日编程(十一)--leetcode刷题
题目:平衡二叉树题目描述:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。分析:没什么可说的,双递归,...原创 2019-01-28 19:38:45 · 205 阅读 · 0 评论 -
每日编程(十二)--leetcode刷题
题目:你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜...原创 2019-02-06 19:19:11 · 171 阅读 · 0 评论 -
每日编程(二十一)--leetcode刷题
题目:最小栈题目描述:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.p...原创 2019-03-01 20:02:01 · 217 阅读 · 0 评论 -
每日编程(二十)
题目:旋转链表题目描述:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向原创 2019-02-28 19:10:58 · 132 阅读 · 0 评论 -
每日编程(十九)--leetcode刷题
题目:反转字符串题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]...原创 2019-02-18 19:41:49 · 188 阅读 · 0 评论 -
每日编程(十八)--leetcode刷题
题目:只出现一次的是数字题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1分析:本来想着利用一个额外的空间储存值进行判断,但是提示不使用额外空间,就想着两层循环来判断是否有重复的值,确实可以但是时间复杂度有点高,...原创 2019-02-18 18:38:46 · 204 阅读 · 0 评论 -
每日编程(十七)--leetcode刷题-又是链表
题目:删除排序链表中的重复元素题目描述:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3分析:题目的难点再与需要把重复的元素全部删...原创 2019-02-17 19:20:51 · 136 阅读 · 0 评论 -
每日编程(十六)--leetcode
题目:移除链表元素题目描述:删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5分析:一开始看题觉得特别简单,也确实简单,只是在提交过程中发现遗漏了多种特殊情况,只有一个元素,该元素是指定值,或者两个元素,都是指定值,如果不考虑就会发生...原创 2019-02-16 19:37:59 · 150 阅读 · 0 评论