每日一题
每日一题,锻炼思维
子藤杜
文艺代码狗
展开
-
每日一题——leetcode643. 子数组最大平均数 I
题目描述给定 n 个整数,找出平均数最大且长度为 k 的连续子数组,并输出该最大平均数。示例:输入:[1,12,-5,-6,50,3], k = 4输出:12.75解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75提示:1 <= k <= n <= 30,000。所给数据范围 [-10,000,10,000]。题目链接:https://leetcode-cn.com/problems/maximum-average-subarray-i解答思路原创 2021-02-04 23:15:47 · 397 阅读 · 0 评论 -
每日一题——some小问题集合
今天是一系列的小问题的集合哦1、类继承+__class__方法问题:有如下的一段代码,问如何使用对象obj调用A的show方法答:obj是类B的一个实例对象,直接调用肯定调用的是类B的show方法。可以使用__class__方法来修改obj的类型,改为A类型,此时obj就变成了类A的一个实例对象,就可以调用A的show方法了,代码及结果如下class A(object): def show(self): print('this is the A show!')cla原创 2021-01-12 20:36:37 · 389 阅读 · 0 评论 -
每日一提——+-符号排序
题目描述输入一个仅包含+和-的数组,输出一个所有+在左边-在右边排序之后的数组,注意要在数组内进行排序示例输入:[‘+‘,’-‘,’-‘,’-‘,’+‘,‘+’]输出:[‘+‘,‘+‘,‘+‘,’-‘,’-‘,’-‘]思路一——遍历+交换位置先把数组中所有的+的数量count(+)数出来,那就意味着数组前count(+)个元素都是+,所以遍历 前count(+)个元素,把里面-的与count(+)之后的+交换一次位置,代码如下def sorted_string(string):原创 2021-01-10 22:10:03 · 971 阅读 · 0 评论 -
刷题系列之数组(一)
1、首先访问局部性有两种基本类型——时间和空间局部性。 时间局部性是指在相对较小的持续时间内对特定数据和/或资源的重用。 空间局部性是指在相对靠近的存储位置内使用数据元素。而对于数组来说,数据是顺序存储的,同一行的数据存储是连续的,而行与行之间存在内存跳跃,也就是行与行之间内存存储位置一般不连在一起,所以逐行访问跳跃最少,访问局部性最小。关于多维数组内存存储可以看下下面例子加强理解。原创 2018-03-14 14:35:40 · 240 阅读 · 0 评论 -
每日一题——移除元素
题目描述给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元...原创 2020-05-03 18:18:44 · 304 阅读 · 0 评论 -
每日一题—— 删除排序数组中的重复项
题目描述给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2...原创 2020-05-03 17:47:29 · 240 阅读 · 0 评论 -
每日一题——有效的括号
有效的括号题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例...原创 2020-04-19 20:24:19 · 256 阅读 · 0 评论 -
每日一题——最长公共前缀
最长公共前缀题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。题目链接:https://leetcod...原创 2020-04-19 16:59:25 · 355 阅读 · 0 评论 -
剑指Offer19——矩形覆盖
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?思路: 其实主要思路还是找规律吧,所以我直接用的比较具体的方法就是枚举然后找规律: # -*- coding:utf-8 -*-class Solution: def rectCover(self, number): # ...原创 2018-05-19 09:41:23 · 258 阅读 · 0 评论 -
剑指Offer20——顺时针打印矩阵
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路: 题目其实不难主要是要把整个过程理清楚,主要的迭代吧,想清楚顺时针转圈的时候迭代值的变化情况# -*- codi...原创 2018-05-19 11:33:49 · 240 阅读 · 0 评论 -
剑指Offer21——整数中1出现的次数
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。# -*- coding:utf-8 -*-class Solution: def Numb...原创 2018-05-19 11:42:06 · 342 阅读 · 0 评论 -
剑指Offer22——第一个只出现一次的字符
题目描述 在一个字符串(1&lt;=字符串长度&lt;=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置# -*- coding:utf-8 -*-class Solution: def FirstNotRepeatingChar(self, s): # write code here if s == '' or len(...原创 2018-05-19 11:48:19 · 312 阅读 · 0 评论 -
剑指Offer15——链表中环的入口
题目描述 一个链表中包含环,请找出该链表的环的入口结点。 思路:题目相对来说比较简单,直接遍历找到第一个曾经出现过得结点就是环的入口# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solutio原创 2018-04-09 16:19:12 · 159 阅读 · 0 评论 -
剑指Offer16——删除链表中重复的结点
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路一:构造一个新的链表,把不重复的结点链接进去就好了# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):#原创 2018-04-10 16:05:24 · 216 阅读 · 0 评论 -
剑指Offer18——变态青蛙跳
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路: 这个按照剑指Offer17那道题的找规律的思路来进行处理 其中当有n阶台阶的时候,它第一次跳有n种情况:它第一次跳了1阶,那跳法就是它跳剩下台阶的跳法,所以就是f(n-1);假如它第一次跳了2阶,那总跳法就是它跳完2阶跳剩下台阶的总跳法发f(n-2);。。。...原创 2018-05-18 16:18:52 · 312 阅读 · 0 评论 -
剑指Offer17——跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路1: 其实题目很简单,很显然直接可以用递归来做,但是用递归做时间会太久,加上Python本身就不快,所以用递归不能在题目要求的时间范围内完成程序运行。#-*- coding:utf-8 -*-# __author__ = 'ziteng'# __time__ ='22:12'...原创 2018-05-18 16:23:03 · 274 阅读 · 0 评论 -
剑指Offer(12)——合并两个排序的链表
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 利用比较通用的做法: # -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution:原创 2018-04-07 22:46:47 · 159 阅读 · 0 评论 -
剑指Offer(13)——复杂链表的复制
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路: 关于链表的相关操作一定要注意的就是指针的使用,遇到复杂的问题我们可以将问题分成几个部分分别处理,然后拼接起来就可以解决复杂问题了。第一步:在原链表的基础上,在原创 2018-04-08 12:26:26 · 184 阅读 · 0 评论 -
剑指Offer14——两个链表的第一个公共结点
题目描述 输入两个链表,找出它们的第一个公共结点。思路一:两个链表如果有公共结点的话那么他们整体肯定是呈Y字形,那我可以先让长的链表往前走几步,直到它后面的长度和短的链表一样长的时候再让两者一起走,到达的第一个公共结点就是所求啦~ # -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# sel原创 2018-04-09 10:07:18 · 220 阅读 · 0 评论 -
剑指Offer(9)——从尾到头打印链表
题目描述 输入一个链表,从尾到头打印链表每个节点的值。对于链表来说,每个结点都是一个二元组,包含元素域和链接域,也就是一个存储元素的值,一个存储下一个结点的地址,这道题对直接的思路就是遍历整个链表,将所有结点的元素存储在一个数组中,然后倒序输出得到的数组。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x...原创 2018-04-07 21:01:38 · 179 阅读 · 0 评论 -
剑指Offer(10)——链表中倒数第k个结点
题目描述 输入一个链表,输出该链表中倒数第k个结点。思路:因为要输出倒数第K个结点,所以我们可以设置两个指针,两个指针之间相差K,也就是第一个指针先走K步,然后让第二个指针再走,一直保持两者之间相差K,这样让第一个指针走到最后时,第二个指针也就正好到达倒数第K个结点。 # -*- coding:utf-8 -*-# class ListNode:# def __init__(self原创 2018-04-07 21:30:29 · 154 阅读 · 0 评论 -
剑指Offer(11)——反转链表
题目描述 输入一个链表,反转链表后,输出链表的所有元素。 解: 先定义一个last指针,用来指向pHead指针的下一个结点 然后x0结点应该指向None,也就是pHead.next=last,它会成为我们反转之后的最后一个结点,让last指向x0:last=pHead,pHead = pHead.next,这样才完整的将x0给分离出来了 然后再相同的步骤,让pHead往后移,然后依原创 2018-04-07 21:57:33 · 211 阅读 · 0 评论 -
剑指Offer(6)——字符串的全排列
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。思路: 大致思路就是对于字符串的每一个位置都让还没有确定位置的字符坐一遍,比如第一个位置,让原字符串里所有的字符都来坐一遍原创 2018-04-07 14:34:08 · 234 阅读 · 0 评论 -
剑指Offer(7)——左转字符串
题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!class Soution: def LeftRotateString(self,s,n):原创 2018-04-07 14:44:10 · 228 阅读 · 0 评论 -
剑指Offer(8)——表示数值的字符串
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。思路:考察正则表达式的使用,注意?表示前面的子表达式出现0次或1次,*表示前面的子表达式出现0次或多次,+表示前面的字表达式出现1次或多次。这原创 2018-04-07 18:04:31 · 209 阅读 · 0 评论 -
剑指Offer(5)——不修改数组找出重复的数字
题目描述: 在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的。请找出数组中任意一个重复的数字,但是不能修改输入的数组。按照二分查找的思路,将1-n分成两半,假如将1-n分成1-m和m+1到n。如果1~m中的数字的数目超过m,那就说明有重复数字;否则,另一半中一定有重复的数字。我们可以继续把包含重复数字的区间继续二分,直到找到一个重复的数字。class Sol原创 2018-03-17 18:25:52 · 1886 阅读 · 0 评论 -
剑指Offer(4)——字符串转整数
题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 注意:这个题目条件给的比较全面,如果一个题只告诉我们要字符串转整数,我们也要注意问题的全面程度。class Solution: def strChageint(s): if s == '': print (0)原创 2018-03-16 16:56:33 · 271 阅读 · 0 评论 -
剑指Offer(1)——二维数组的查找
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。这道题考察的是数组和查找。可能有人一上来会没有头绪,当我们需要解决一个复杂的问题时,一个很有效的办法就是从一个具体的问题入手,通过分析简单具体的例子,试图寻找普遍的规律。以上面的二维数组为例,我们从具体问题出发,来找规律:原创 2018-03-08 11:32:17 · 361 阅读 · 0 评论 -
剑指Offer(2)——替换空格
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。这道题考察的知识点是字符串 题目相对来说比较简单,只需要用到str的replace函数就可以了class Solution: def replaceSpace(self,s): s = s.replace('原创 2018-03-08 12:00:39 · 276 阅读 · 0 评论 -
剑指Offer(3)——数组中重复的数字
题目 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。 (排序一个长度为n的数组需要O(nlogn)的时间)注意测试用例:(注意考虑问题的全面性)长度为n的数组里包含一个或多个重原创 2018-03-08 20:44:20 · 307 阅读 · 0 评论