算法设计
文章平均质量分 65
纽约的自行车
这个作者很懒,什么都没留下…
展开
-
LeetCode精选100题(4)——颜色分类
目录前言题目解题方法拓展前言 LeetCode精选100题系列第四题。题目颜色分类 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例 1: 输入:nums = [2,0,2,1,1,0] 输出:[0,0,1,1,2,2]解题方法方法一:单指针 我们可以考虑对数组进行两次遍历。在第一次遍历中,我们将数组中所有的 0交换到数原创 2021-12-25 14:47:36 · 481 阅读 · 0 评论 -
LeetCode精选100题(3)——无重复字符的最长子串
目录前言题目解题方法前言 LeetCode精选100题系列第三题。题目无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1: 输入: s = “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解题方法 滑动窗口法。用前后两个指针表示无重复字符的最长子串的开始和结束位置,两个指针之间表示窗口。后指针不断后移,每次后移判断当前字符是否在窗口中出现,若出现则前指针移到窗口中的该字符后一个位原创 2021-07-07 20:43:14 · 183 阅读 · 0 评论 -
LeetCode精选100题(2)——两数相加
目录前言题目解题方法前言 LeetCode精选100题系列第一题,反思解题中的弯路,解析最佳答案思路。题目两数相加 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.解题方法原创 2021-07-07 20:01:07 · 184 阅读 · 0 评论 -
LeetCode精选100题(1)——两数之和
两数之和前言题目前言LeetCode精选100题系列第一题,反思解题中的弯路,解析最佳答案思路。题目两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。...原创 2021-07-04 16:10:18 · 230 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题41 : 数据流中的中位数
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。原创 2019-11-24 17:28:16 · 339 阅读 · 0 评论 -
剑指offer 第二版(Python3)--面试题13:机器人的运动范围
地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?原创 2019-11-24 11:57:21 · 466 阅读 · 0 评论 -
剑指offer 第二版(Python3)--面试题14:剪绳子
给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。原创 2019-11-24 11:03:57 · 283 阅读 · 0 评论 -
剑指offer 第二版(Python3)--面试题12:矩阵中的路径
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。原创 2019-11-23 22:05:12 · 285 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题54 : 二叉搜索树的第k个结点
给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。原创 2019-11-23 17:13:27 · 264 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题37 : 序列化二叉树
请实现两个函数,分别用来序列化和反序列化二叉树原创 2019-11-23 16:26:15 · 316 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题28:对称的二叉树
请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。原创 2019-11-23 13:35:33 · 229 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题18:删除链表中重复的节点
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。原创 2019-11-22 22:53:10 · 369 阅读 · 1 评论 -
剑指offer第二版(Python3)--面试题19:正则表达式匹配
请实现一个函数用来匹配包括'.'和'\*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。原创 2019-11-21 21:44:23 · 183 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题20:表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。原创 2019-11-21 20:41:16 · 230 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题23:链表中环的入口
给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。原创 2019-11-20 23:37:24 · 201 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题67 : 把字符串转换成整数
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0原创 2019-11-19 23:16:10 · 278 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题3 : 数组中重复的数字
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。原创 2019-11-19 23:14:37 · 243 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题66 :构建乘积数组
给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。原创 2019-11-19 23:04:54 · 264 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题65 : 不用加减乘除做加法
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。原创 2019-11-18 22:08:01 · 247 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题62 : 圆圈中最后剩下的数字
0, 1, 2 ,...,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。原创 2019-11-17 23:00:02 · 245 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题64 : 求1+2+3+...+n
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。原创 2019-11-17 18:39:33 · 220 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题61 :扑克牌中的顺子
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10位数字本身,A为1,J为11,Q为12, K为13,你可以认为大小王就是数字0,大小王可以抵任意数字。原创 2019-11-17 18:05:23 · 385 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题58 :翻转字符串、左旋转字符串
题目一:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?题目二:同样对于使用Python3来说,只不过是字符串拼接问题,需要注意的是左移位数大于字符串长度的情况。原创 2019-11-17 16:46:18 · 285 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题57 : 和为s的连续正数序列、和为s的数字
题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。题目二:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!原创 2019-11-17 15:57:45 · 336 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题56 :数组中数字出现的次数
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度O(n),空间复杂度O(1)。原创 2019-11-17 14:14:51 · 452 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题55 :二叉树的深度、平衡二叉树
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。原创 2019-11-17 10:57:49 · 259 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题53 :在排序数组中查找数字
统计一个数字在排序数组中出现的次数。原创 2019-11-17 00:06:51 · 527 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题52 : 两个链表的第一个公共结点
输入两个链表,找出它们的第一个公共结点。原创 2019-11-16 23:30:47 · 274 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题51 : 数组中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007原创 2019-11-16 23:21:17 · 458 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题50 : 第一个只出现一次的字符、字符流中第一个只出现一次的字符
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)。原创 2019-11-16 20:38:28 · 344 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题49 : 丑数
丑数是另一个丑数乘以2, 3, 5的结果,所以只需要把得到的丑数不断地乘以2、3、5之后并放入他们应该放置的位置即可。原创 2019-11-16 18:11:05 · 378 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题45 : 把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。原创 2019-11-16 16:51:22 · 843 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题43 : 从1到n整数中1出现的次数
求出1~~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。原创 2019-11-16 15:11:43 · 420 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题42 : 连续子数组的最大和
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)原创 2019-11-16 12:23:27 · 213 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题40 : 最小的k个数
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。原创 2019-11-16 11:26:26 · 227 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题39 : 数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。原创 2019-11-15 22:39:34 · 343 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题38 : 字符串的排列
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。原创 2019-11-15 00:28:32 · 237 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题36:二叉搜索树与双向链表
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。原创 2019-11-13 22:48:28 · 326 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题35:复杂链表的复制
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)原创 2019-11-12 22:14:52 · 312 阅读 · 0 评论 -
剑指offer第二版(Python3)--面试题34:二叉树中和为某一值的路径
输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)原创 2019-11-11 22:29:04 · 202 阅读 · 0 评论