
算法
文章平均质量分 77
ItsJingdai
这个作者很懒,什么都没留下…
展开
-
LeetCode 无重复字符的最长子串(3题)
LeetCode 无重复字符的最长子串@author:Jingdai@date:2022.01.17题目描述给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例输入s = "abcabcbb"示例输出3 解释因为无重复字符的最长子串是 "abc",所以其长度为 3。思路及代码我们可以从头到尾遍历每个字符,记录以每个字符结尾的不含重复字符的长度,然后从中选出最长的就是结果。那现在问题就变成了怎么求出以每个字符结尾的不含重复字符的长度。方法1:基于滑动窗原创 2022-01-17 13:05:44 · 439 阅读 · 0 评论 -
百度笔试(2021-9-7)子序列问题
算法 百度笔试(2021-9-7)子序列问题@author:Jingdai@date:2021.09.18前几天做百度笔试的一个题没有a出来,今天有空,搜了大佬的题解,做了出来,现在总结一下。题目描述给你一个长度为 n 且全部由小写字母组成的字符串 s,问你有多少个子序列恰好包含 k 个字母?输入描述,第一行两个整数 n 和 k,第二行输入一个长度为 n 的仅含小写字母的字符串 s。输出描述,恰好包含k个字母的子序列的个数,由于个数可能会很大,所以输出对 1000000007 取余的结果。原创 2021-09-18 22:48:24 · 1436 阅读 · 1 评论 -
LeetCode 课程表 III(630题)
LeetCode 课程表 III@author:Jingdai@date:2021.09.17题目描述这里有 n 门不同的在线课程,他们按从 1 到 n 编号。每一门课程有一定的持续上课时间(课程时间)t 以及关闭时间第 d 天。一门课要持续学习 t 天直到第 d 天时要完成,你将会从第 1 天开始。给出 n 个在线课程用 (t, d) 对表示。你的任务是找出最多可以修几门课。示例输入[[100, 200], [200, 1300], [1000, 1250], [2000, 3200]]原创 2021-09-17 17:38:59 · 440 阅读 · 0 评论 -
LeetCode 零钱兑换 II(518题)完全背包转换
LeetCode 零钱兑换 II@author:Jingdai@date:2021.09.12题目描述(518题)给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。假设每一种面额的硬币有无限个。题目数据保证结果符合 32 位带符号整数。示例输入amount = 5, coins = [1, 2, 5]示例输出4解释解释:有四种方式可以凑成总金额:5原创 2021-09-12 15:43:58 · 286 阅读 · 0 评论 -
常用负载均衡算法概念及实现总结
常用负载均衡算法概念及实现总结@author:Jingdai@date:2021.07.06这篇文章将介绍常用的几个负载均衡算法,随机算法(简单随机、加权随机)、轮询算法(简单轮询、加权轮询、平滑加权轮询)、一致性hash算法。现代互联网环境下,当流量请求很大的时候,一台服务器就很难很好的完成任务了,就需要用多台服务器建立一个集群来完成任务。如图,由3个服务器组成的集群,负载均衡算法解决的问题就是如何将流量合理的打到这三台服务器上,使系统的性能达到最佳。随机算法简单随机最简单的办法就是原创 2021-07-06 22:41:32 · 413 阅读 · 1 评论 -
约瑟夫环问题
算法 约瑟夫环问题@author:Jingdai@date:2021.06.02约瑟夫环问题是一个非常经典的问题,希望看完这篇文章可以让你学会解决这个问题。题目描述n 个人围成一圈,从第一个开始报数,第 m 个将被杀掉,然后从 m 后面那个人开始重新报数,直到最后剩下一个人。求最后剩下的那个人的下标。思路常规的思路可以利用链表或者数组进行模拟删除过程,但是当 n 和 m 比较大的时候,这种方法就会超时,这里记录一种递推的方法。以 n = 5,m = 3 为例,我们给每个人标记为 A、原创 2021-06-02 21:49:39 · 237 阅读 · 0 评论 -
LeetCode 根据身高重建队列(406题)
LeetCode 根据身高重建队列@author:Jingdai@date:2021.03.18题目描述(406题)假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第原创 2021-03-18 15:22:53 · 510 阅读 · 1 评论 -
LeetCode 寻找两个正序数组的中位数(4题)
LeetCode 寻找两个正序数组的中位数(4题)@author:Jingdai@date:2021.03.14题目描述(4题)给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。思路及代码如果不考虑时间复杂度,可以很容易想到两种方法,一种是先将数组合并,然后进行排序后找中位数,时间复杂度是 O((m+n)*log(m+n));另一种是根据数组顺序进行合并,合并后就是有序的数组,然后在求中位数,时间复杂度是 O(m+n原创 2021-03-14 21:34:44 · 472 阅读 · 0 评论 -
LeetCode 零钱兑换(322题)四种方法求解
LeetCode 零钱兑换@author:Jingdai@date:2021.01.10题目描述(322题)给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。示例 :输入:coins = [1, 2, 5], amount = 11输出:3 解释:11 = 5 + 5 + 1思路及代码看到这个题目时,我第一想到的就是用 dfs 或者原创 2021-01-10 23:16:30 · 956 阅读 · 0 评论 -
LeetCode 岛屿数量(200题)DFS、BFS、并查集
LeetCode 岛屿数量@author:Jingdai@date:2020.12.29题目描述(200题)给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 :输入:grid = [ ["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"],原创 2020-12-29 20:44:49 · 287 阅读 · 0 评论 -
判断链表是否存在环并找出环入口(图解)
算法 判断链表是否存在环并找出环入口@author:Jingdai@date:2020.12.26题目描述判断给定的链表中是否存在环,如果存在环的话找出环的入口并输出,如果不存在环的话就输出 null。思路及代码首先第一个问题是如何判断一个链表中是否存在环呢?熟悉快慢指针的童靴一定知道判断链表是否存在环是一个典型的可以用快慢指针解决的问题。我们用两个指针,一个慢指针 slowPointer,一个快指针 fastPointer。他们都从头开始走, 慢指针一次走一步,快指针一次走两步,如果存在原创 2020-12-26 16:24:31 · 265 阅读 · 0 评论 -
LeetCode 最大交换(670题)两种方法图解
LeetCode 最大交换@author:Jingdai@date:2020.12.25题目描述(670题)给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。示例 1 :输入: 2736输出: 7236解释: 交换数字2和数字7。思路及代码方法1 排序首先看一种好理解的方法,第一步将原数字按从大到小的顺序排序,也就是如果不规定交换次数所能达到的最大值。如图,比如题目中的 2736 排序后就得到了 sortedNums = 7632。然后我们对比排序后的数原创 2020-12-25 22:37:24 · 742 阅读 · 0 评论 -
LeetCode LRU 缓存机制(146题)
LeetCode LRU 缓存机制(146题)@author:Jingdai@date:2020.12.11题目描述(146题)运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存。int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int val原创 2020-12-11 22:20:36 · 161 阅读 · 0 评论 -
LeetCode 删除二叉搜索树中的节点(450题)递归与非递归
LeetCode 删除二叉搜索树中的节点@author:Jingdai@date:2020.12.06题目描述(450题)给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。题目分析对于一个二叉搜索树,要删除树中一个节点,分3种情况。情况1:如果要删除的节点是叶子节点,比如图中节点12,可以直接删除。情况2:如果要删除的节点只有一个子树,比如图中节点5,可以将该节点的子原创 2020-12-06 21:25:42 · 387 阅读 · 0 评论 -
非递归后序遍历二叉树总结(2种方法)
算法 非递归后序遍历二叉树总结(2种方法)@author:Jingdai@date:2020.12.04传送门非递归先序遍历二叉树非递归中序遍历二叉树方法1非递归用栈来辅助遍历,后序遍历是第三次遇到该节点再遍历,但是栈只能给我们提供遇到两次的判断方法,第一次是入栈时,第二次是出栈时,它们分别对应着二叉树的先序和中序遍历。所以我们需要利用一些技巧来辅助我们判断,这也是后序遍历二叉树比先序和中序稍微复杂一点的原因。看着代码进行分析。public static void postOrde原创 2020-12-04 17:37:41 · 7247 阅读 · 0 评论 -
非递归中序遍历二叉树总结(2种方法)
算法 非递归中序遍历二叉树总结(2种方法)@author:Jingdai@date:2020.12.03方法1先序遍历是第一次遇到该节点遍历;中序是第二次遇到该节点遍历;而后序是第三次遇到该节点遍历。非递归用栈进行遍历,第一次遇到就是压栈时,第二次是弹栈时,所以中序遍历应该弹栈的时候进行遍历。弹栈后代表弹栈节点及其左子树已经遍历完了,所以此时将弹栈节点的右子节点压栈,对其右子树进行同样的操作。代码如下。public static void inOrderTraverse(TreeNode root原创 2020-12-03 22:22:17 · 4371 阅读 · 0 评论 -
非递归先序遍历二叉树总结(3种方法)
算法 非递归先序遍历二叉树总结(3种方法)@author:Jingdai@date:2020.12.03递归先序遍历二叉树非常的简单,但是面试的时候面试官经常会要求我们写非递归的方法,这里总结一下。方法1先写一个最简单的方法。首先回想一下层次遍历二叉树的代码,利用一个队列完成树的遍历。如下代码。public static void levelOrderTraverse(TreeNode root) { if (root == null) return; Li原创 2020-12-03 11:36:57 · 7903 阅读 · 1 评论 -
LeetCode 组合总和 Ⅱ(40题)图解
LeetCode 组合总和 Ⅱ@author:Jingdai@date:2020.11.30题目描述(40题)给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例:输入: candidates = [2,5,2,1,2], target = 5输出: [ [1,2原创 2020-11-30 16:34:02 · 170 阅读 · 0 评论 -
LeetCode 正则表达式匹配(10题)dp和递归方法
LeetCode 正则表达式匹配@author:Jingdai@date:2020.11.28题目描述(10题)给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素提示:s 可能为空,且只包含从 a-z 的小写字母p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *保证每次出现字符 * 时,前面都匹配到有效的字符示例1输入: s = "aa" p = "原创 2020-11-28 16:26:24 · 158 阅读 · 0 评论 -
迷宫算法总结(总路径数、方法数)
算法 迷宫算法总结(总路径数)@author:Jingdai@date:2020.11.20上篇总结了一下迷宫最短路径的解法,这篇总结一下迷宫中从起点到终点总路径条数的解法。题目描述这里给出一个典型求迷宫总路径的题目,来源洛谷题目P1605。给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。输入描述:第一行N、M原创 2020-11-20 21:03:11 · 2689 阅读 · 0 评论 -
迷宫算法总结(最短路径)
算法 迷宫算法总结(最短路径)@author:Jingdai@date:2020.11.20迷宫问题是一个非常经典的算法问题,现总结一下。题目描述给你一个迷宫,并给你一个起点和终点,请你给出从起点到终点的最短路径,若不存在最短路径,输出 -1。迷宫中用 '#' 代表障碍,其余字符都可以走。输入描述,第一行两个数代表迷宫的大小(行数m和列数n);第二行代表起点和终点的坐标;后面的 m 行是迷宫。输入示例:10 100 1 9 8#S######.#......#..#.#.#原创 2020-11-20 09:51:25 · 9181 阅读 · 12 评论 -
美团笔试(2020-9-6)员工分配问题
算法 美团笔试(2020-9-6)员工分配问题@author:Jingdai@date:2020.11.18前几天看美团笔试题,记录一下。该题是美团9月6号的算法笔试题第4题。题目描述公司有 n 位员工,需要划分 n 位员工的从属关系,划分要求如下:每个人要么没有下属,要么至少有 2 个直接下属第 i 个人的下属(包括自己)有 ai 个注意:直接下属和下属(包括自己)可以分别看成该员工的“儿子”和“子树”,问是否存在这样一种关系。输入描述:输入第一行是一个整数 n (n&原创 2020-11-18 23:00:35 · 472 阅读 · 0 评论 -
跳台阶基础版、改进版(不能连续跳2阶)
算法 跳台阶基础版、改进版(不能连续跳2阶)@author:Jingdai@date:2020.11.15跳台阶(青蛙跳)是一个非常经典的算法问题,前几天看面试题看到一个跳台阶的改进版(不能连续跳2个台阶),现总结一下。在介绍改进版解法之前先复习一下基础版,不想看的可以直接跳到改进版部分。基础版题目描述有一个 n 阶的楼梯,你从最下面往上跳,每次可以跳1阶或2阶,有多少种方法可以跳到楼顶?思路及代码这个基础版很简单,对于第 n 阶,你只有两种方式跳上去:从 n-1 阶跳1阶跳原创 2020-11-15 23:14:57 · 1835 阅读 · 6 评论 -
LeetCode 最长回文子串(5题)
LeetCode 最长回文子串@author:Jingdai@date:2020.11.13题目描述(5题)给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例输入"babad"示例输出"bab"注意:“aba” 也是一个有效答案。思路及代码动态规划首先看这个题用动态规划怎么做。动态规划最重要的就是要找到状态转移方程。对于一个串,如果它是一个回文串,则从它前后各去掉一个字符(不考虑边界问题),它仍然是一个回文串。即原创 2020-11-13 21:11:41 · 357 阅读 · 0 评论 -
LeetCode 在排序数组中查找元素的第一个和最后一个位置(34题)
LeetCode 在排序数组中查找元素的第一个和最后一个位置@author:Jingdai@date:2020.11.09题目描述(34题)给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例输入nums = [5,7,7,8,8,10], target = 8示例输出[3,4]思路这个题是典型的二分原创 2020-11-09 22:36:51 · 164 阅读 · 0 评论 -
LeetCode 二叉树的最近公共祖先(236题)三种解法详解
LeetCode 二叉树的最近公共祖先@author:Jingdai@date:2020.11.06题目描述(236题)给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。注意:一个节点也可以是它自己的祖先。说明:所有节点的值都是唯一的。p、q 为不同节点且均存在于给定的二叉树中。题目分析如图,二叉树的公共祖先分成两种情况。第一种情况是两个节点 p 、q 分别位于最近公共祖先的异侧。第二种情况是两个节点 p 、q 其一就是他们的公共祖先,另一个节点位于它的子树中。思路及代原创 2020-11-06 22:12:38 · 510 阅读 · 0 评论 -
求二叉树根节点到指定节点的路径
算法 求二叉树根节点到指定节点的路径@author:Jingdai@date:2020.11.05题目描述给你一个棵二叉树,再给你一个指定的节点,求根节点到指定节点的路径。如图,比如让你求到 4 节点的路径,则应该返回的路径为 [0, 1, 4] 。思路利用二叉树的先序遍历,寻找指定的节点,同时用一个栈 stack 记录遍历到的节点,当找到需要的节点后立即返回结果。但是这样有一个问题,就是在遍历中 stack 记录的路径中包含一些其他的节点,比如要求上图中到 4 节点的路径,则遍历到 4原创 2020-11-05 17:25:47 · 14624 阅读 · 3 评论 -
LeetCode 对称二叉树(101题)
LeetCode 对称二叉树@author:Jingdai@date:2020.11.03题目描述(101题)给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2/ \ / \3 4 4 3思路1.递归方法如图,可以看出一个对称二叉树的左子树和右子树是镜像对称的,同时左子树的左子树又是和右子树的右子树镜像对称的,左子树的右子树是和右子树的左子树镜像对称的…这不就是一个典型的递归问题吗?根据这个性质原创 2020-11-03 22:34:55 · 202 阅读 · 0 评论 -
算法 堆排序(递归和非递归方式讲解)
算法 堆排序@author:Jingdai@date:2020.10.29刷 LeetCode 215 题,用到堆排序,现总结一下堆排序的知识。基础知识完全二叉树在说堆之前,必须先要说一下完全二叉树。注意和满二叉树区别,完全二叉树的节点可以是任意多个。但是完全二叉树除了最后一层,其余层必须是满的,同时最后一层的叶子节点必须都在左边,从左往右排。如下图是完全二叉树和非完全二叉树的示例。堆堆是一种特殊的完全二叉树,分为大根堆和小根堆。对于大根堆,除根节点外每个节点的值小于等于原创 2020-10-29 11:22:06 · 1093 阅读 · 0 评论 -
算法 快速排序(随机性优化)
算法 快速排序@author:Jingdai@date:2020.10.28今天刷 LeetCode,发现以前学的快排又忘记了,现记录一下,希望以后不会再忘了。简介快排,即快速排序。嗯,没啥说的,直接看思路吧。思路思路一句话概括就是确定数组中一个数 pivot ,然后将小于它的数全部放在它左边,把大于它的数全部放在它右边。然后递归对它左边的子数组和右边的子数组调用同样的算法。那选择哪个数作为 pivot 呢?为简单起见,这里选择数组最左边的数作为 pivot ,然后用两个指针变量原创 2020-10-28 09:47:05 · 680 阅读 · 0 评论 -
LeetCode 去除重复字母(316题)
LeetCode 去除重复字母(316题)@author:Jingdai@date:2020.10.27题目描述(316题)给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例输入s = "bcabc"示例输出"abc"提示s 由小写英文字母组成思路题目大概一看可能会认为很简单,不就是去个重嘛。但仔细看会发现不是这样,题目的难点根本不是去重,而是要使字典序最小,同时不能打原创 2020-10-27 11:04:03 · 181 阅读 · 0 评论 -
LeetCode 移掉K位数字(402题)
LeetCode 移掉K位数字(402题)@author:Jingdai@date:2020.10.24题目描述(402题)给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。注意 num 的长度 ≥ k num 不会包含任何前导零示例输入num = "1432219", k = 3示例输出"1219"解释移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。思路题目要求是移除 k 位数字,所原创 2020-10-24 21:04:11 · 154 阅读 · 0 评论 -
LeetCode 最长有效括号(32题)
LeetCode 最长有效括号@author:Jingdai@date:2020.10.10题目描述(32题)给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。示例输入")()())"示例输出4解释最长有效括号子串为 "()()"思路方法1 dp动态规划,建立一个长度等于字符串长度的数组 dp[] ,数组 dp[i] 的值代表以 i 结尾的子串的最长有效括号长度。初始条件很明显,初始条件 dp[0] = 0。原创 2020-10-10 20:45:40 · 139 阅读 · 0 评论 -
LeetCode 使数组唯一的最小增量(945题)
LeetCode 使数组唯一的最小增量(945题)@author:Jingdai@date:2020.10.07题目描述(945题)给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例输入[1,2,2]示例输出1解释经过一次 move 操作,数组将变为 [1, 2, 3]提示:0 <= A.length <= 400000 <= A[i] < 40000原创 2020-10-07 11:24:15 · 148 阅读 · 0 评论 -
洗牌算法(Knuth算法)
算法 洗牌算法(Knuth算法)@author:Jingdai@date:2020.10.02简介给你一个数组(牌),要求打乱数组顺序,使每个元素出现在任何地方的概率一样。思路利用经典洗牌算法,就是 Knuth 算法。如下图,在整个数组 [0, n-1] 中(包括最后一个元素)随机选出一个元素,将它和最后那个元素 [n-1] 交换,然后再在数组 [0, n-2] 中随机选出一个元素,将它与倒数第二个元素 [n-2] 交换…一直到最后一个元素,就完成了算法。代码public vo原创 2020-10-02 10:54:28 · 3873 阅读 · 1 评论 -
LeetCode 矩阵置零(73题)
LeetCode 矩阵置零@author:Jingdai@date:2020.09.30题目描述(73题)给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例输入:[ [1,1,1], [1,0,1], [1,1,1]]示例输出:[ [1,0,1], [0,0,0], [1,0,1]]思路看到题目,第一想法应该是使用两个集合分别记录哪些行和哪些列应该设置为0,当遍历到 matrix[i]原创 2020-09-30 10:16:50 · 192 阅读 · 0 评论 -
LeetCode 字符串相乘(43题)
LeetCode 字符串相乘@author:Jingdai@date:2020.09.26题目描述(43题)给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,乘积也表示为字符串形式。示例输入: num1 = "745", num2 = "12"输出: "8940"不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。思路方法1如图,就是利用小学学习过的乘法,对 num2 从低位开始每一位原创 2020-09-26 19:35:05 · 197 阅读 · 0 评论 -
LeetCode 字符串相加(415题)
LeetCode 字符串相加@author:Jingdai@date:2020.09.25题目描述(415题)给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。不能使用任何 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。思路这个其实没什么好说的,就是简单记录一下代码。从低位开始各个位相加,有进位记录进位,直接看代码。代码public String add(String num1, String num2) { int i = nu原创 2020-09-25 19:33:25 · 199 阅读 · 0 评论 -
LeetCode 回文数(9题)巧解
LeetCode 回文数@author:Jingdai@date:2020.09.23题目描述(9题)判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。如121、123321。思路判断回文数非常简单,就和字符串判断回文一样,一个双指针就可以解决。但是需要额外多创建一个字符串,这里不用这种方法,用一种比较巧妙的方法解决这个问题。首先想到可以将整个整数翻转,如果翻转得到的数字和原来的数字一样,则代表是回文数,否则不是。有些细心的童靴可能会想到有整数溢出问原创 2020-09-23 16:14:12 · 246 阅读 · 0 评论 -
LeetCode 划分字母区间(763题)
LeetCode 划分字母区间@author:Jingdai@date:2020.09.21题目描述(763题)字符串 S 由小写字母'a' 到 'z'组成,把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例输入:S = “ababcbacadefegdehijhklij”示例输出:[9,7,8]思路题目要求同一个字母只能出现在一个片段中,那么就从第一个字母开始,找到第一个字母最后出现的位置,把他当做片段临时的结尾,然原创 2020-09-21 10:34:07 · 211 阅读 · 0 评论