Python 剑指offer
Matrix_1127
这个作者很懒,什么都没留下…
展开
-
奇安信21届秋招算法岗笔试题 亲7数的个数
奇安信21秋招算法岗笔试题题目描述如果一个正整数可以被7整除,我们称之为亲7数,对于给出的一组个位数字,请找出使用所有的数字排列的数中的亲7数的个数。其中给出的个位数字数组中每一个都是不相关的,即使有重复的数字,如{1,1,2}排列出的整数位{112,121,112,121,211,211},亲7数为{112,112}共2个。输入:个位数字数组,数组有m个元素{x1,x2,x3…xm}(0<=xi<=9)输出:亲7的个数测试样例输入[1,1,2]输出2解题思路方法1:原创 2020-08-01 21:37:44 · 1540 阅读 · 0 评论 -
Python剑指offer 连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)。时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C+原创 2020-07-29 20:39:43 · 199 阅读 · 0 评论 -
Python剑指offer 字符串的排列
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。解题思路1、定义一个辅助函数helper,函数先取定s中的一个元素,然后递归调用除这个元素之外的其他元素进行组合,最后把所有可能的组合添加进列表返原创 2020-07-29 20:08:58 · 183 阅读 · 0 评论 -
Python剑指offer 数组中重复的数字
数组中重复的数字题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M解题思路1、先判断边缘条件,如果数组为空,直接return False2、定义一个字典用来存放每个字符出现的次数。3、遍历数原创 2020-07-27 11:19:11 · 163 阅读 · 0 评论 -
Python剑指offer 第一个只出现一次的字符
第一个只出现一次的字符题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)。时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M解题思路可以先定义一个字典用来记录每个字符出现的次数,然后从字典里面找出第一个次数等于1的字符即可。1,定义一个字典dct,然后遍历字符串s,得到的字典dct就已经记录好了每个字符出现的次数。2,遍历字原创 2020-07-26 10:40:14 · 293 阅读 · 0 评论 -
Python剑指offer 删除链表中的重复节点
删除链表中的重复节点题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M解题思路1.设置一个虚拟头结点,设置两个指针,pre指向虚拟头结点,cur指向头结点。2.判断下一个节点的值和cur的值是否相等,若相等cur后移,直到下个节点的原创 2020-07-26 10:08:27 · 161 阅读 · 0 评论 -
Python剑指offer 连续子数组的最大和
连续子数组的最大和题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1)。时间限制:Python 2秒 空间限制:原创 2020-07-07 22:29:19 · 183 阅读 · 0 评论 -
Python剑指offer 合并两个排序链表
合并两个排序链表题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M解题思路· 把pHead2往pHead1的中插。· 比较pHead2与pHead1的值:· 当pHead2值小等于pHead1值时往pHead1的前面插,并让pHead2指向下一个元素· 否则不进行插入,pHead1指向下一个结点。· 重复上述操作,直到有一个链表为空· 判断是哪个链表空了原创 2020-07-04 15:20:57 · 171 阅读 · 0 评论 -
Python剑指offer 链表的倒数第k个节点
链表的倒数第k个节点题目描述输入一个链表,输出该链表中倒数第k个结点。时间限制:Python 2秒 空间限制:Python 64M解题思路先做一个长度为 k 的尺子。给两个游标,初始时让它们都指向头节点,然后让前面那个游标先走 k 步,那么现在前面节点和后面节点的差值就是 k ,也就是说两个游标的差距是 k ,长度为 k 的尺子就做好了,下面再同时让两个游标一起走,当前面那个游标走到尾时,后面那个游标刚好就是倒数第 k 个节点了,这时输出这个值即可。# -*- coding:utf-8 -*-原创 2020-07-04 15:09:49 · 112 阅读 · 0 评论 -
Python剑指offer 栈的压入弹出序列
栈的压入弹出序列## 题目描述## 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)。原创 2020-07-04 14:58:31 · 185 阅读 · 0 评论 -
Python剑指offer 旋转数组的最小数字
旋转数组的最小数字题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 时间限制:Python 6秒 空间限制:Python 64M由旋转数组的定义可以知道,最小数字既要小于左边的数又要小于右边的数 。另外因为数组是非减排序的,所以右边的数正常状态下是一定大于左边的数,那么要原创 2020-07-04 12:03:47 · 2062 阅读 · 0 评论 -
Python剑指offer 用两个栈实现队列
用两个栈实现队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。时间限制:Python 2秒 空间限制:Python 64M首先初始化两个列表作为栈,一个用作输入,另一个用作输出,对于队列的push操作用input去接收,对于队列的pop操作,需要先把input里面的所有值都弹出添加到output中,再弹出output的最后一个,这样就实现了队列的先进先出原理。class Solution: def __init__(self):原创 2020-07-04 11:24:54 · 117 阅读 · 0 评论 -
Python剑指offer 二维数组的查找
二维数组的查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。时间限制:Python 2秒 空间限制:Python 64M由于这个二维数组的每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。那么可以知道每一行的最后一个数是最大的,每一列中下面的数比上面的大。所以我们先从右上角的那个元素找起,如果刚好等于target那么就找到原创 2020-07-04 11:16:31 · 142 阅读 · 0 评论