![](https://img-blog.csdnimg.cn/20190918092417198.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
PROGRAM
灵感刷题
王山山
破卷如有神
展开
-
剑指Offer:调整数组顺序使奇数位于偶数前面(Python语言实现)
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。快速排序的思想。为了减少交换次数,直接使用两个索引low和high分别向右、向左进行检索直到找到满足要求的值为止,进行交换。这里使用了一个扩展函数,用来表示通用方法func。class Solution: def reorder_array(self, array):...原创 2019-09-21 21:10:14 · 315 阅读 · 0 评论 -
网易:笔试题(20190921)
最小数位和要使得数位和达到要求并且最小,那就是刚好等于x值,即n值从后往前填充,逢9向前移一进位。def min_bit_sum(x): if x < 10: return x res = 0 base = 1 while x: if x >= 9: res += (9 * base) ...原创 2019-09-21 18:00:23 · 254 阅读 · 0 评论 -
腾讯:笔试题(20190920)
电话号码满足要求的值必须是首位数组为8并且长度大于等于11,之所以大于11是因为包括了删除除第一个数字以外其他数字使得长度等于11过程。def phone_number(seq): if len(seq) < 11: return 'NO' if seq[0] == '8': if len(seq) >= 11: ...原创 2019-09-20 22:40:32 · 393 阅读 · 0 评论 -
剑指Offer:斐波那契数列(Python语言实现)
题目一:求斐波那契数列的第n项写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。斐波那契数列的定义如下:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)循环版效率高于递归版,递归容易造成栈溢出。def fibonacci(n): if n < 2: return n a, b = 0, 1 for ni in...原创 2019-09-20 19:52:01 · 750 阅读 · 0 评论 -
剑指Offer:替换空格(Python语言实现)
请实现一个函数,把字符串中的每个空格替换成"%20"。例如,输入"We are happy.",则输出"We%20are%20happy."。列表化后遍历依次检测,使用索引赋值方式替换字符,这里使用join方法而不是+避免不必要的内存开销。def replace_blank(s): if not s or ' ' not in s: return s res...原创 2019-09-20 19:23:47 · 256 阅读 · 0 评论 -
剑指Offer:二维数组中的查找(Python语言实现)
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数。根据数字规律选择好起始点,而不能按照常规从点(0, 0)开始,而应该从点(n, 0)或点(0, n)开始。每一次都在数组的查找范围中剔除一行或者一列,缩小查找的范围,直到找到要查找的数字,或者查找范围为空。def find_nu...原创 2019-09-20 19:06:45 · 230 阅读 · 0 评论 -
滴滴:笔试题(20190919)
垃圾分类利用下三角矩阵求得空闲区块的数目space和冲突的最大值conflict。如果space>=conflict则约束条件不影响分成两个车厢;否则根据space值返回。def garbage(values, n): if not values: return n // 2 * 2 conflict, space = 0, 0 for nu in...原创 2019-09-19 21:32:42 · 278 阅读 · 0 评论 -
深信服:笔试题(20190918)
打怪升级 50%import sysfrom collections import dequedef beat_monster(seq):if not seq:return 0value, index = [], []for si in range(len(seq)):for sj in range(len(seq[0])):if seq[si][sj] not in ‘0-’:...原创 2019-09-18 20:16:54 · 762 阅读 · 0 评论 -
快手:笔试题(20190916)
验证IP地址分类别进行筛选,注意IPv4是以.为分割符,而IPv6是以:为分隔符。def confine_ip_address(seq): if not seq: return 'Neither' if '.' in seq: seq = seq.split('.') # print('.', seq) if le...原创 2019-09-16 23:49:01 · 647 阅读 · 0 评论 -
猿辅导:笔试题
逆时针打印矩阵剑指Offer的改编题目,从顺时针变成了逆时针。对每一圈按照向下、向右、向上、向左的方向依次判断条件进行输出。import mathdef send_fruits(seq, row, col): if not seq: return [] res = [] # print(row, row//2, math.ceil(row/2))...原创 2019-09-16 23:40:39 · 4010 阅读 · 0 评论 -
咪咕:笔试题(20190916)
一年的第几天对闰年的设定根据possible变量来递增,其它则分别进行累加即可。def the_nth_days(seq): if not seq: return 0 months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] values = {du: mu for du, mu in zip(r...原创 2019-09-16 23:35:27 · 3058 阅读 · 0 评论 -
竞技世界:笔试题(20190915)
字符串排序提取排序后,按索引赋值返回。def string_resort(seq): container = [] for su in seq: if su.isalpha(): container.append(su) container.sort() idx = 0 for si in range(len(se...原创 2019-09-16 23:31:17 · 1370 阅读 · 0 评论 -
字节跳动:笔试题(20190908)
被看到最多次的机器人设置一个全0的跟踪列表,依次遍历序列找出它当前可以看到的第一个机器人,在其对应的跟踪列表的元素值加1。def most_see_count(n, seq): if not seq and len(seq) < 2: return 0 res = [0] * n for si in range(1, n): for...原创 2019-09-14 20:05:11 · 337 阅读 · 0 评论 -
流利说:笔试题(20190911)
礼物派发动态规划的思想。考虑三种可能,左边没有右边有,左边有右边没有,左边有和右边有。其中左边有和右边有则分两种情况,即加入左边或者加入右边。def send_gift(n, a, b, seq): if n == 0: return 0 if not seq: return 0 left, right = seq[0] firs...原创 2019-09-14 10:20:41 · 586 阅读 · 0 评论 -
VIVO:笔试题(20190911)
拆礼盒设立一个栈,判断到字符0为止仍剩余的左括号。所以当匹配到右括号的时候应该出一个左括号与之匹配。#!/usr/bin/python# -*- coding: utf-8 -*-'''Welcome to vivo !'''def solution(s): # TODO Write your code here stack = [] for su in...原创 2019-09-14 09:24:53 · 1620 阅读 · 1 评论 -
奇安信:笔试题(20190909)
结束进程树输入很难处理,没有给定每行数字的个数。这里采用全盘接收了再按情况分割放入容器内。#include <iostream>#include <vector>#include <deque>using namespace std;int kill_sub_process(vector<int> child, vector<i...原创 2019-09-12 11:28:04 · 4527 阅读 · 0 评论 -
百度:笔试题(20190910)
翻硬币没有AC的思路,就简单的考虑一种情况来实现的,通过率为45%。def flip_corn(seq, x, y): if not seq: return 0 neg_to_pos = min(x, y) count, flag = 0, False for su in seq: if flag: if ...原创 2019-09-12 10:32:46 · 504 阅读 · 0 评论 -
哔哩哔哩:笔试题(20190910)
最小操作次数def operator_count(source, target): if not source: return len(target) if not target: return len(source) su, tu = source[0], target[0] if su == tu: retur...原创 2019-09-11 22:30:31 · 2186 阅读 · 0 评论 -
海康威视:笔试题(20190908)
倒三角99乘法表#include <iostream>using namespace std;void main(){ for(int row=1; row<10; row++) { for(int col=9; col>=row; col--) { if(col>row) cout << row << "...原创 2019-09-08 16:17:56 · 4319 阅读 · 0 评论 -
网易互娱:笔试题(20190907)
二进制回文数利用栈stack作为媒介来求十进制数的二进制,再折半比较判断是否为回文数。#include <iostream>#include <vector>#include <stack>using namespace std;bool sample(int num){ stack<int> values; while(num...原创 2019-09-07 22:40:20 · 1684 阅读 · 2 评论 -
字节跳动:雀魂启动!(Python语言实现)
题目描述小包最近迷上了一款叫做雀魂的麻将游戏,但是这个游戏规则太复杂。小包玩了几个月了还是输多赢少。于是生气的小包根据游戏简化了一下规则发明了一种新的麻将。只留下一种花色,并且去除了一些特殊和牌方式(例如七对子等),具体的规则如下:总共有36张牌,每张牌是1~9。每个数字4张牌。你手里有其中的14张牌,如果这14张牌满足如下条件,即算作和牌14张牌中有2张相同数字的牌,称为雀头。...原创 2019-09-07 16:55:02 · 1776 阅读 · 0 评论 -
字节跳动:万万没想到之抓捕孔连顺(Python语言实现)
题目描述我叫王大锤,是一名特工。我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺。和我一起行动的还有另外两名特工,我提议1. 我们在字节跳动大街的N个建筑中选定3个埋伏地点。2. 为了相互照应,我们决定相距最远的两名特工间的距离不超过D。我特喵是个天才! 经过精密的计算,我们从X种可行的埋伏方案中选择了一种。这个方案万无一失,颤抖吧,孔连顺!……万万没想到,计划还是失败...原创 2019-09-07 15:54:56 · 631 阅读 · 0 评论 -
字节跳动:毕业旅行问题(C++语言实现)
毕业旅行问题题目描述小明目前在做一份毕业旅行的规划。打算从北京出发,分别去若干个城市,然后再回到北京,每个城市之间均乘坐高铁,且每个城市只去一次。由于经费有限,希望能够通过合理的路线安排尽可能的省一些路上的花销。给定一组城市和每对城市之间的火车票的价钱,找到每个城市只访问一次并返回起点的最小车费花销。输入描述城市个数n(1<n≤20,包括北京)城市间的车票价钱:n行n列...原创 2019-09-07 11:07:13 · 1067 阅读 · 0 评论 -
招银网络:笔试题(20190906)
黄金数的个数设置一个临时变量来存放所有因子之积,当大于当前值cu则可以直接中止。如果两者相等,则累加值count加一。#include <iostream>using namespace std;int gold_number(int num){ if(num < 6) return 0; int count = 0; for(int nu=6; nu &...原创 2019-09-07 01:09:25 · 8889 阅读 · 0 评论 -
携程:笔试题(20190904)
链表排序设置标志位flag来区分低于m值的结点是否已经放在链表首部,同时设置pre来存放前一个结点,方便删除当前结点。对于第一次在队首插入比m值小的结点,有两种情况:是该链表的第一个结点、不是该链表的第一个结点。而对于不是第一次在队首插入结点,则设置last来存放左区域的最后一个结点。#include <iostream>#include <vector>#incl...原创 2019-09-06 23:33:25 · 660 阅读 · 0 评论 -
小红书:笔试题(20190903)
笔记草稿设置标志位flag判断是否进入注释部分,注释的开始和取消来自于栈comment的实现。def backup_note(seq): res = [] comment = [] flag = False for su in seq: if not flag: if su.islower(): ...原创 2019-09-03 22:37:54 · 788 阅读 · 0 评论 -
小红书:树的不同形态(Python语言实现)
题目描述给定二叉树T(树深度不超过H<=10,深度从1开始,节点个数N<1024,节点编号1~N)的层序和中序遍历,输出T从左向右叶子节点以及树先序和后序遍历序列输入描述输入两行,分别代表层序和中序遍历结果,节点编号按单个空格分开输出描述依次输出:从左向右叶子节点、先序和后序遍历的序列。节点编号按空格分开示例输入:3 5 4 2 6 7 12 5 3...原创 2019-09-02 21:28:24 · 278 阅读 · 0 评论 -
小红书:每K个一组反转链表(Python语言实现)
题目描述给出一个链表,每k个节点一组进行翻转,并返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么将最后剩余节点保持原有顺序。说明:1.你需要自行定义链表结构,将输入的数据保存到你的链表中;2.你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换;3.你的算法只能使用常数的额外空间。输入描述第一行输入是链表的值第二行输入...原创 2019-09-02 18:42:46 · 888 阅读 · 0 评论 -
拼多多:选靓号(Python语言实现)
题目描述A国的手机号码由且仅由N位十进制数字(0-9)组成。一个手机号码中有至少K位数字相同则被定义为靓号。A国的手机号可以有前导零,比如000123456是一个合法的手机号。小多想花钱将自己的手机号码修改为一个靓号。修改号码中的一个数字需要花费的金额为新数字与旧数字之间的差值。比如将1修改为6或6修改为1都需要花5块钱。给出小多现在的手机号码,问将其修改成一个靓号,最少需要多少钱?...原创 2019-09-01 23:44:21 · 2305 阅读 · 0 评论 -
拼多多:笔试题(20190901)
寻找优先级的Top N先将序列分成奇数和偶数部分,分别就地排序后合并。输出前N个数字def top_n_of_array(seq, k): left = [lu for lu in seq if lu % 2 == 0] right = [ru for ru in seq if ru % 2 != 0] left.sort(reverse=True) right...原创 2019-09-01 19:01:12 · 1909 阅读 · 0 评论 -
Shopee:Shopee的零食柜(C++语言实现)
题目描述shopee的零食柜,有着各式各样的零食,但是因为贪吃,小虾同学体重日益增加,终于被人叫为小胖了。他终于下定决心减肥了,他决定每天晚上去操场跑两圈,但是跑步太累人了,他想转移注意力,忘记痛苦。正在听着音乐的他,突然有个想法,他想跟着音乐的节奏来跑步。音乐有7种音符,对应的是1到7,那么他对应的步长就可以是1-7分米,这样的话他就可以转移注意力了。但是他想保持自己跑步的速度,在规定...原创 2019-08-30 23:05:20 · 793 阅读 · 0 评论 -
京东:寻找子串(Python语言实现)
给出m个字符串S1,S,...,Sm和一个单独的字符串T。请在T中选出尽可能多的子串同时满足: 这些子串在T中互不相交。 这些子串都是S1,S2,...,Sm中的某个串。 问最多能选出多少个子串。输入描述第一行一个数m(1≤m≤10),接下来m行,每行一个串。最后一行输入一个串T。输入中所有单个串的长度不超过100000,串中只会出现小写字母。输出描述...原创 2019-08-28 11:47:15 · 388 阅读 · 0 评论 -
小红书:幼儿园分班(Python语言实现)
题目描述幼儿园一个大班要分成两个小班,有些小朋友不希望自己和其他某几位小朋友同班。园长向大家收集了不希望同班的要求,然后视情况将一个大班的小朋友分成两个班。请你开发一个程序,帮助园长快速判断是否所有小朋友的不同班请求都可以被满足。输入描述输入分为三部分。 第一个部分是一个int,代表这个大班里小朋友的总数。 第二部分是一个int,代表园长采集到的小朋友们的请求数。...原创 2019-08-28 09:29:52 · 2241 阅读 · 2 评论 -
快手:回文字符串(Python语言实现)
题目描述最大回文子串是被研究得比较多的一个经典问题。最近月神想到了一个变种,对于一个字符串,如果不要求子串连续,那么一个字符串的最大回文子串的最大长度是多少呢。输入描述每个测试用例输入一行字符串(由数字0-9,字母a-z、A-Z构成),字条串长度大于0且不大于1000.输出描述输出该字符串的最长回文子串的长度。(不要求输出最长回文串,并且子串不要求连续)示例输入:...原创 2019-08-27 20:02:36 · 356 阅读 · 0 评论 -
剑指Offer:序列化二叉树(Python语言实现)
请实现两个函数,分别用来序列化和反序列化二叉树。把树分为3部分:根节点、左子树和右子树,在序列化/反序列化根节点之后再分别序列化/反序列化左、右子树,因此可以递归解决。class Solution: def __init__(self): self._values = None self._index = -1 def serialize(s...原创 2019-08-24 10:44:56 · 235 阅读 · 0 评论 -
剑指Offer:二叉搜索树与双向链表(Python语言实现)
输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。把树分为3部分:根节点、左子树和右子树,然后把左子树中最大的节点、根节点、右子树中最小的节点链接起来。至于如何把左子树和右子树内部的节点链接成链表,那和原来的问题的实质是一样的,可以递归解决。class Solution: def convert_binary_search_tree(self, root): ...原创 2019-08-24 10:44:15 · 150 阅读 · 0 评论 -
剑指Offer:复杂链表的复制(Python语言实现)
请实现函数复制一个复杂链表。在复杂链表中,每个节点除了有一个指针指向下一个节点,还有一个指针指向链表中的任意节点或者None。在不用辅助空间的情况下实现O(n)的时间效率。分为三步:根据原始链表的每个节点创建对应的新节点、设置复制出来的节点的random、把这个长链表拆分成两个链表。class RandomListNode: def __init__(self, x): ...原创 2019-08-24 10:43:35 · 244 阅读 · 0 评论 -
剑指Offer:二叉树中和为某一值的路径(Python语言实现)
输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。在函数退出之前要在路径上删除当前节点并减去当前节点的值,以确保返回父节点时路径刚好是从根节点到父节点。class Solution: def __init__(self): self.res = None self.sta...原创 2019-08-24 10:42:42 · 271 阅读 · 0 评论 -
剑指Offer:二叉搜索树的后序遍历序列(Python语言实现)
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回True,否则返回False。假设输入的数组的任意两个数字都互不相同。处理一棵二叉树的遍历序列,则可以先找到二叉树的根节点,再基于根节点把整棵树的遍历序列拆分成左子树对应的子序列和右子树对应的子序列,接下来再递归地处理这两个子序列。class Solution: def verify_sequence_of_...原创 2019-08-24 10:41:57 · 262 阅读 · 0 评论 -
剑指Offer:栈的压入、弹出序列(Python语言实现)
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假如压入栈的所有数字均不相等。class Solution: def is_pop_order(self, nums1, nums2): if not nums2 or len(nums1) != len(nums2): return False ...原创 2019-08-24 10:41:06 · 141 阅读 · 0 评论