![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题日记
文章平均质量分 86
火星人不会写代码
一个恨不得把注释写成作文的程序小白汪
展开
-
【刷体日记】双指针问题
leecode 680 回文串给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: “aba”输出: True示例 2:输入: “abca”输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。思路判断回文 --> 双指针i,ji ,ji,j以"abdda"为例,当iii指向’b’,jjj指向’d’,此时不对,但是有一次删除的机会,那么子串范围为(i+1,ji+1, ji原创 2021-06-09 16:36:49 · 192 阅读 · 2 评论 -
【刷题日记】贪心算法
【刷题日记】贪心算法leetcode 455 分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。思路每个孩子只有一块饼干。饥饿度最小的孩子最容易满足,最节省饼干。为了尽原创 2021-04-29 17:13:01 · 209 阅读 · 0 评论 -
【携程】车辆分组
传说是leetcode86可以回头看一下看了一天滑动窗,感觉借鉴了滑动窗的思想,写了个笨笨的方法。也AC了s_list = list(input())from collections import defaultdictcount_dict = defaultdict(int)for item in s_list: count_dict[item]+=1group = [...原创 2019-09-04 21:20:57 · 346 阅读 · 0 评论 -
【携程】求ROC-AUC
ROC-AUC即求ROC曲线下的面积输入第一行:样本数N2——N+1行: 类别,预测值输出:ROC-AUC值,保留两位小数N = int(input())cls1 = []cls2 = []for i in range(N): cls, pred = list(map(float, input().split())) if int(cls) == 1: ...原创 2019-09-04 21:16:48 · 188 阅读 · 0 评论 -
【猿辅导】2019算法岗——角色扮演问题
题目:课堂上老师提供了一些角色,学生可以从中选择一个自己喜欢的角色,每3个不同的局色可以组成一个小组,进行分组对话当老师开始点击分组对话的按钮,服务器会为已经选择自己角色的同学分配对话小组。问 最多能组成多少个小组输入第一行:测试用例数目C(c<100)接下来每行一个测试用例用例的第一个数字表示可供选择的角色数量T(T<1000)接下来T个数字表示每个角色的选择人数Pi...原创 2019-08-26 11:23:24 · 477 阅读 · 0 评论 -
【猿辅导】2019年算法岗——报数问题
题目:老师让学生报自己的学号,每报一次可以获得一个礼物,但是报数超过一定次数的学生不能获得礼物。请整理聊天区报数数列。当发现某个数大于m次是,认为报数过多,我们需要得到去除这些学生煲熟后的报数数列输入:第一行:两个数,学生报数总个数n,允许最大重复次数m第二行:n个整数,代表报数数列输出一行:去除超过m次的报数数列,不改变报数顺序。空格分隔N,m = list(map(...原创 2019-08-26 11:17:30 · 428 阅读 · 0 评论 -
【刷题日记】leetcode——Minimum Depth andMaximum Depth of Binary Tree
题号104.Maximum Depth of Binary Tree这个其实就是求树的深度,写一个递归就好了# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# ...原创 2019-08-17 22:50:09 · 109 阅读 · 0 评论 -
【刷题日记】leetcode2——Add Two Numbers
You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return i...原创 2019-08-17 22:29:52 · 150 阅读 · 0 评论 -
【刷题日记】树的那些事儿(二)——花式递归
热身递归求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)思路不让乘除咋搞。。。自己调算自己吧。。。def sumThem(n): if n ==0 or n==1: return n return n+sumThem(n-1)树的镜像题目描述操作给定的二叉树,将其变换为源二叉树的镜像。...原创 2019-08-16 00:07:30 · 129 阅读 · 0 评论 -
【刷题日记】滑动窗相关的一些leetcode题目
部分内容和思路参考:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/solution/hua-dong-chuang-kou-by-powcai/题目1: leetcode 3 无重复字符的最长字串给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。注: 最长字串是...原创 2019-09-05 00:56:57 · 289 阅读 · 0 评论 -
【刷题日记】不定期更新的leetcode字符串相关
leetcode1047-Easy 删除字符串重所有相邻重复项给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相...原创 2019-09-05 17:17:35 · 118 阅读 · 0 评论 -
【猿辅导】2019秋招算法岗的一些手撕代码(未完成)
数组1. 给一个数组,判断能否分成三部分,每部分的和相同O(N)O(N)O(N)复杂度def threePart(array): if not array or len(array)<3: return False data = array # 累加和 for i in range(1,len(array)): data[...原创 2019-09-05 22:58:32 · 577 阅读 · 1 评论 -
【刷题日记】leetcode 两数/三数/四数之和+最接近的三数之和+较小的三数之和
leetcode1 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0...原创 2019-09-06 15:41:13 · 394 阅读 · 0 评论 -
【刷题日记】leetcode1135 最低成本连通所有城市 python
leetcode原题描述为:地图上有 N 座城市,它们按以 1 到 N 的次序编号。可连接的选项 conections中每个选项 conections[i] = [city1, city2, cost] 表示将城市 city1 和城市 city2 连接所要的成本。(连接是双向的,也就是说城市 city1 和城市 city2 相连也同样意味着城市 city2 和城市 city1 相连)。返回使...原创 2019-09-07 21:37:08 · 1399 阅读 · 0 评论 -
【刷题日记】leetcode128 最长连续序列
给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。思路:难点在于算法复杂度要求。复杂度嘛。一点一点降下来1. 最好想的暴力枚举将数组的每个元素作为序列起始(O(n)O(n)O(n)),逐个枚举下一个元素O(...原创 2019-09-09 14:53:06 · 114 阅读 · 0 评论 -
【刷题日记】回文字符串
leetcode5 最长回文子串(连续)给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”官方题解:https://leetcode-cn.com/problems/longest-palindromic-su...原创 2019-09-12 18:38:21 · 112 阅读 · 0 评论 -
【快手】反转句子单词顺序,不包括逗号
想要全通过有一点注意的地方:单词之间不一定只有一个空格句子最后的句号可能与最后一个单词有空格,也可能没有sentence = list(input().split())if sentence[-1] != '.': last_word = sentence.pop(-1) last_word = last_word[:len(last_word)-1] se...原创 2019-09-17 13:22:40 · 240 阅读 · 0 评论 -
【快手】str1转成str2的最小编辑距离(动态规划,leetcode72)
编辑距离参考Python如何计算编辑距离编辑方法包括:插入一个字符删除一个字符替换一个字符下面整理一下思路:简单情况:(1) 两个空字符串: 距离为0 if i ==0 and j ==0 : dp[i,[j] = 0(2) 一个空字符串:距离为非空字符串的长度: if i==0 or j ==0: dp[i][j]=i+j两个非空字符串:len(str1) = i, le...原创 2019-09-17 14:55:48 · 266 阅读 · 0 评论 -
【快手】判断9*9数独的有效性
我觉得而有个关键点在于对数独的理解:数独有效不一定有解。所以有效的意义是:同一行只有1-9 且不重复同一列只有1-9且不重复同一个格子里只有1-9且不重复然后题目要通过的话python要小心一下输出。。。所以挨个检查就完事了def isValidSudoku(board): row = [set([]) for i in range(9)] # 9个set表...原创 2019-09-17 16:54:05 · 604 阅读 · 0 评论 -
【刷题日记】leetcode91——Decode ways
2019 B站校招算法笔试编程题大意是A-Z使用1-26编码,那么输入一个数,求该编码可能表示多少种字符串思路这是一个非常类似于青蛙跳台阶,一次可以跳一级或者两级,N个台阶有多少种跳法的问题但是这里限制了编码范围是1-26对于一个输入字符串边界1:s[0] 不能为0.,否则这个问题规模就不用在扩大了,直接返回0接下来创建问题规模的动态规划备忘录:问题规模的递推:假设已...原创 2019-08-21 00:45:11 · 116 阅读 · 0 评论 -
【PDD】找出方差最小的三个数,输出方差
输入第一行: N第二行:N个数输出N = int(input())numbers = list(map(int,input().split()))numbers = sorted(numbers)var = 100000**2for i in range(N-2): avg = (numbers[i]+numbers[i+1]+numbers[i+2])/3 v...原创 2019-08-11 19:24:21 · 425 阅读 · 0 评论 -
【刷题日记】网易——牛牛的背包问题
牛牛准备参加学校组织的春游, 出发前牛牛准备往背包里装入一些零食, 牛牛的背包容量为w。牛牛家里一共有n袋零食, 第i袋零食体积为v[i]。牛牛想知道在总体积不超过背包容量的情况下,他一共有多少种零食放法(总体积为0也算一种放法)。输入描述:输入包括两行第一行为两个正整数n和w(1 <= n <= 30, 1 <= w <= 2 * 10^9),表示零食的数量和...原创 2019-08-03 11:42:12 · 328 阅读 · 0 评论 -
【刷题日记】网易——牛牛的闹钟
牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要X分钟到达教室,上课时间为当天的A时B分,请问他最晚可以什么时间起床输入描述:每个输入包含一个测试用例。每个测试用例的第一行包含一个正整数,表示闹钟的数量N(N<=100)。接下来的N行每行包含两个整数,表示这个闹钟响起的时间为Hi(0<=A<24)时Mi(0<=...原创 2019-08-02 22:14:08 · 112 阅读 · 0 评论 -
【刷题日记】网易——瞌睡
题目:瞌睡小易觉得高数课太无聊了,决定睡觉。不过他对课上的一些内容挺感兴趣,所以希望你在老师讲到有趣的部分的时候叫醒他一下。你知道了小易对一堂课每分钟知识点的感兴趣程度,并以分数量化,以及他在这堂课上每分钟是否会睡着,你可以叫醒他一次,这会使得他在接下来的k分钟内保持清醒。你需要选择一种方案最大化小易这堂课听到的知识点分值。输入描述:第一行 n, k (1 <= n, k <=...原创 2019-08-02 19:05:44 · 156 阅读 · 0 评论 -
【刷题日记】网易——丰收
题目:丰收又到了丰收的季节,恰逢小易去牛牛的果园里游玩。牛牛常说他对整个果园的每个地方都了如指掌,小易不太相信,所以他想考考牛牛。在果园里有N堆苹果,每堆苹果的数量为ai,小易希望知道从左往右数第x个苹果是属于哪一堆的。牛牛觉得这个问题太简单,所以希望你来替他回答。输入描述:第一行一个数n(1 <= n <= 105)。第二行n个数ai(1 <= ai <=...原创 2019-08-02 19:04:49 · 139 阅读 · 0 评论 -
【刷题日记】链表,栈和队列
链表单向链表双向链表结点定义class ListNode: def __init__(self,x): self.val = x self.next = None栈:后进先出队列:先进先出这三种数据结构是手撕代码的最高频出现的基础数据结构了链表相关题目1:从尾到头打印一个单链表(返回一个list)def Reverselist(ListNode):...原创 2019-07-08 19:00:55 · 190 阅读 · 0 评论 -
【刷题日记】树的那些事儿(四)——二叉搜索树BST
树的那些事儿(一)——基础操作树的那些事儿(二)——重建一棵树题目: 返回一棵二叉搜索树的第k小结点考察点:二叉搜索树的特点:左子树≤根结点≤右子树(左-根-右顺序)如何按照二叉搜索树的排序进行遍历:中序遍历返回树的中序遍历的第k个结点即可。直接上代码,不知道中序遍历怎么写的请参阅添加链接描述注意一下边界可见啊,树的基本操作真的太太太太重要了啊!def KthNode(s...原创 2019-06-24 13:16:51 · 88 阅读 · 0 评论 -
【刷题日记】树的那些事儿(三)——重建一棵树
树的那些事儿——基本操作 中整理了一些树的基本操作。这一篇开始就整理剑指offer中树的一些习题吧~题目: 重建一棵树输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。这个问题其实看起来并不困难。(类似的问题还右输入中序和后序遍历。。)前序遍历:第一个值就是树的根结点。中序遍历:以前序遍历的第一个值为界,左边是左子树...原创 2019-06-24 11:40:47 · 134 阅读 · 0 评论 -
【刷题日记】树的那些事儿(一)——基本操作
树在面试中真的是一个出镜率异常高的数据结构了。而且和递归结合紧密,作为手撸代码的考察真是再合适不过。所以就在这篇日记里不断更新树的一些概念和相应的题目吧~我的梦想是!一文在手!天下我有!树的手撸代码中常常涉及到的知识树的深度递归 / 非递归树的结点结点数求下一个结点:前中后序数的遍历前中后层序递归非递归(栈/队列辅助)前序+中序 / 后序+中序重建一棵树...原创 2019-06-24 01:14:05 · 160 阅读 · 0 评论 -
【刷题日记】斐波那契大礼包系列
题目1 . 基本斐波那契大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39f(0)=0f(0) = 0f(0)=0f(1)=1f(1) = 1f(1)=1f(n)=f(n−1)+f(n)f(n) = f(n-1)+f(n)f(n)=f(n−1)+f(n)递归不写了。随便写个非递归class Solution: ...原创 2019-08-07 22:23:52 · 75 阅读 · 0 评论 -
【刷题日记】调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路一:设置一个list,逐个存储数组的奇数。然后把剩余偶数接在后面思路二:python大法好# -*- coding:utf-8 -*-class Solution: def reOrderArray...原创 2019-08-07 23:41:09 · 81 阅读 · 0 评论 -
【贝壳找房】丢失的卡片
题目大概:有一叠 编号为1~N的卡片。吹落了一张。输入剩余N-1张卡编号中0~9出现的次数。(次数不大于300)输出卡片数目N和吹落卡片的编号。如果吹落卡片的解不唯一,从小到大排输入样例:2 12 9 3 3 3 3 2 2 2输出样例:26 1226 21晚上又写了一段代码。基本思路是:0. check了0-9出现次数不大于300的最大的数是999.从n=1...原创 2019-08-11 01:40:15 · 576 阅读 · 0 评论 -
【刷题日记】数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路:看起来是个数组题,其实是个字符题。遍历数组元素两两组合,分析他们谁在前面最后形成的数更大,该交换交换,该保持原位保持原位。数组元素的组合是”拼接”。那么转换成字符串更方便操作。# -*- coding:ut...原创 2019-08-07 20:08:11 · 81 阅读 · 0 评论 -
【刷题日记】字符串/ 流中第一个不重复的字符&第一个重复的数字 &只出现一次的数字
题目1:第一个只出现一次的字符的位置在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).# -*- coding:utf-8 -*-class Solution: def FirstNotRepeatingChar(self, s): # 字符串空返回-1 ...原创 2019-08-07 01:52:54 · 224 阅读 · 0 评论 -
【刷题日记】和为s的连续正数序列 & 和为s的两个数字
题目描述: 和为s的连续正数序列小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所...原创 2019-08-09 00:16:55 · 101 阅读 · 0 评论 -
【刷题日记】网易——俄罗斯方块
小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。荧幕上一共有 n 列,每次都会有一个 1 x 1 的方块随机落下,在同一列中,后落下的方块会叠在先前的方块之上,当一整行方块都被占满时,这一行会被消去,并得到1分。有一天,小易又开了一局游戏,当玩到第 m 个方块落下时他觉得太无聊就关掉了,小易希望你告诉他这局游戏他获得的分数。输入描述:...原创 2019-08-02 14:12:01 · 130 阅读 · 0 评论 -
【刷题日记】不会输入,笔试白搭
写剑指offer的日子里,幸福的爆炸,完全不用考虑处理输入输出,然而一到公司笔试,连输入都不会,算法岂不是干瞪眼。输入处理千千万,简单粗暴最有效。一般笔试题逐行处理单行输入的情况比较多(输入数据流什么的以后再议)最简单粗暴的处理方式如下import sys # 导入sys模块# split是分割函数,将字符串分割成“字符”,保存在一个列表中。默认是空格分割,也可以自定义分隔符和分割次数...原创 2019-08-02 14:07:33 · 358 阅读 · 1 评论 -
【刷题日记】剑指offer——旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路这是一个查找问题查找问题一般可以通过顺序查找和二分查找二分查找主要适用于有序(顺序有序)的数组但是同时...原创 2019-08-02 11:44:27 · 102 阅读 · 0 评论 -
【刷题日记】连续子数组的最大和 & 数组的最长递增子序列
题目:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的...原创 2019-08-08 00:09:24 · 194 阅读 · 0 评论 -
【刷题日记】剑指offer——构建乘积数组
题目:构建乘积数组给定一个数组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]。不能使用除法。开始思考这个问题:因为不许用除法,我就构建了两个数组保存中间结果:mid_1 = [1, A[0], ...原创 2019-06-22 19:31:53 · 112 阅读 · 0 评论