算法----模拟
sunlanchang
北京邮电大学-计算机硕士,sunlanchang@bupt.edu.cn
展开
-
LeetCode 29. 两数相除
Description给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2示例 1:输入: dividend = 10, divisor = 3输出: 3解释: 10/3 = truncate(3.33333..)原创 2020-06-30 21:04:29 · 206 阅读 · 0 评论 -
LeetCode 13. 罗马数字转整数
Description罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V转载 2020-06-30 16:32:34 · 204 阅读 · 0 评论 -
LeetCode 999. 车的可用捕获量(模拟)
Description在一个 8 x 8 的棋盘上,有一个白色车(rook)。也可能有空方块,白色的象(bishop)和黑色的卒(pawn)。它们分别以字符 “R”,“.”,“B” 和 “p” 给出。大写字符表示白棋,小写字符表示黑棋。车按国际象棋中的规则移动:它选择四个基本方向中的一个(北,东,西和南),然后朝那个方向移动,直到它选择停止、到达棋盘的边缘或移动到同一方格来捕获该方格上颜色相反...原创 2020-03-26 20:03:50 · 170 阅读 · 0 评论 -
LeetCode 892. 三维形体的表面积(模拟)
Description在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],[0,2]]输出:16示例 4:输...原创 2020-03-25 20:54:49 · 165 阅读 · 0 评论 -
LeetCode 836. 矩形重叠
Description矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:true示例...原创 2020-03-18 21:40:22 · 243 阅读 · 0 评论 -
LeetCode 326. 3的幂
Description给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: falseSolutionclass Solution: def isPowerOfThree(self, n: int) ->...原创 2019-10-31 16:38:26 · 79 阅读 · 0 评论 -
LeetCode 217. 存在重复元素
Description给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: trueSolutioncla...原创 2019-10-31 16:17:17 · 80 阅读 · 1 评论 -
LeetCode 238. 除自身以外数组的乘积
Description给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。Solution同剑指offer乘积 = 当前数左边的乘...原创 2019-10-31 16:12:31 · 153 阅读 · 0 评论 -
LeetCode 56. 合并区间
Description给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被...原创 2019-10-31 14:40:25 · 74 阅读 · 0 评论 -
Leetcode 73. 矩阵置零
Description给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入: [ [0,1,2,0], [3,4,5,2], [1,3...原创 2019-10-27 22:05:32 · 88 阅读 · 0 评论 -
Leetcode 66. 加一
Description给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字...原创 2019-10-26 20:06:29 · 163 阅读 · 0 评论 -
Leetcode 27. 移除元素
描述给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元...原创 2019-07-09 16:29:42 · 132 阅读 · 0 评论 -
Leetcode 28. 实现strStr()
描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “...原创 2019-07-09 16:46:05 · 83 阅读 · 0 评论 -
Leetcode 190. 颠倒二进制位
描述颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,因此返回 964176192,其二进制表示形式为 0011100...原创 2019-07-15 16:11:11 · 94 阅读 · 0 评论 -
Leetcode 345. 反转字符串中的元音字母
描述编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:输入: “hello”输出: “holle”示例 2:输入: “leetcode”输出: “leotcede”Solutionclass Solution(object): def reverseVowels(self, s): """ :type s: str ...原创 2019-07-15 16:50:54 · 161 阅读 · 0 评论 -
Leetcode 67. 二进制求和
描述给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”Solutionclass Solution: def addBinary(self, a: str, b: str) ...原创 2019-07-11 17:21:17 · 77 阅读 · 0 评论 -
剑指 offer 斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39Solution迭代解法,时间复杂度O(n)。# -*- coding:utf-8 -*-class Solution: def Fibonacci(self, n): ans = [None] * 40 ans[0] =...原创 2019-07-19 15:19:36 · 195 阅读 · 0 评论 -
剑指 offer 顺时针打印矩阵
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.Solution逐行分析规律。class Solution: # matrix类型为二维列表,需要返回列表...原创 2019-08-16 20:37:48 · 66 阅读 · 0 评论 -
LeetCode 665. 不增加的数组
Discription给定一个包含n个整数的数组,您的任务是通过修改最多1个元素来检查它是否可以变为不减少。1<=n<=10000Example 1:Input: [4,2,3] Output: TrueExample 2:Input: [4,2,1] Output: FalseSolution找到下降的位置,判断第一个修改第一个位置还是修改第二个位置bool checkPossibility(原创 2017-08-27 11:14:56 · 1381 阅读 · 0 评论 -
剑指offer 左旋转字符串
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!Solutionclass Solution: def LeftRotateStrin...原创 2019-09-19 22:09:28 · 137 阅读 · 0 评论 -
剑指offer 翻转单词顺序列
题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?Solutioncla...原创 2019-09-19 22:22:14 · 126 阅读 · 0 评论 -
剑指offer 把字符串转换成整数
题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+21474836471a33Solutio...原创 2019-09-23 15:45:13 · 147 阅读 · 0 评论 -
剑指 offer 构建乘积数组(构建矩阵做乘法)
题目描述给定一个数组A[0,1,...,n−1]A[0,1,...,n-1]A[0,1,...,n−1],请构建一个数组B[0,1,...,n−1]B[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]B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]B[i...原创 2019-09-24 15:40:51 · 268 阅读 · 0 评论 -
剑指 offer 字符流中第一个不重复的字符(hashmap)
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。Solution使用hashmap保存字母出现的次数,遍历原字符串次数为1则返回该字符。class Solu...原创 2019-09-24 16:06:43 · 174 阅读 · 0 评论 -
牛客网 日期差值 (日期问题板题)
题目描述有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天输入描述:有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出描述:每组数据输出一行,即日期差值示例1输入2011041220110422输出11solution板题#include &lt;iostream&gt;#include &lt;cstdio&gt...原创 2019-01-02 16:33:20 · 249 阅读 · 0 评论 -
Leetcode 26. 删除排序数组中的重复项
描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nu...原创 2019-07-09 16:15:14 · 88 阅读 · 0 评论 -
LeetCode 14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。Solutionclass Solution { public String longestCom...原创 2019-05-04 23:05:58 · 140 阅读 · 0 评论 -
PAT B1003 我要通过!(模拟)
Description“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字...原创 2019-02-18 13:29:30 · 188 阅读 · 0 评论 -
牛客网 旋转矩阵(模拟、北航机试)
题目描述任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。 要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。输入描述:输入有多组数据。每组数据第一行输入n(1<=n<=9),从第二行开始输入两个n阶矩阵。输出描述:判断第...原创 2019-02-22 20:26:40 · 585 阅读 · 1 评论 -
PAT A1025 PAT Ranking(sort部分排名)
Description有n个考场,每个考场若干学生,给出给个考场每个雪神的准考证号和成绩,按成绩排名,成绩相同按照准考证好递增排序。Output输出考生总数,和考生的准考证号,总排名,考场号,考场内排名。Sample Input:251234567890001 951234567890005 1001234567890003 951234567890002 771234567...原创 2019-02-01 13:45:06 · 339 阅读 · 0 评论 -
PAT B1009 说反话(简单模拟)
描述给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:Hello World Here I ...原创 2019-02-01 12:09:21 · 242 阅读 · 0 评论 -
PAT B1022 D进制的A+B(进制转换板题,简单模拟)
描述输入两个非负 10 进制整数 A 和 B (≤230 −1),输出 A+B 的 D (1&lt;D≤10)进制数。输入格式:输入在一行中依次给出 3 个整数 A、B 和 D。输出格式:输出 A+B 的 D 进制数。输入样例:123 456 8输出样例:1103Solution进制转换板题。#include &lt;iostream&gt;#include &...原创 2019-02-01 11:49:30 · 170 阅读 · 0 评论 -
叠筐 HDU - 2074(矩阵填数字)
description需要的时候,就把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。Input输入是一个个的三元组,分别是,外筐尺寸n(n为满足0&lt;n&lt;80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;Output输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角...原创 2019-01-03 15:57:02 · 207 阅读 · 0 评论 -
PAT B1036 跟奥巴马一起编程(简单模拟)
描述格式:输入在一行中给出正方形边长 N(3≤N≤20)和组成正方形边的某种字符 C,间隔一个空格。输出格式:输出由给定字符 C 画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的 50%(四舍五入取整)。输入样例:10 a输出样例:aaaaaaaaaaa aa aa aaaaaa...原创 2019-02-01 11:12:37 · 290 阅读 · 0 评论 -
PAT B1001 害死人不偿命的(3n+1)猜想(简单模拟)
描述对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?输入格式:每个测试输入包含 1 个测试用例,即给出正整数 n 的值。输出格式:输出从...原创 2019-02-01 09:43:57 · 181 阅读 · 0 评论 -
NowCoder 剩下的树 (打表)
题目描述有一个长度为整数L(1&amp;lt;=L&amp;lt;=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,…,L共L+1个位置上有L+1棵树。 现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间包括端点)所有的树。 可能有M(1&amp;lt;=M&amp;lt;=100)个区间,区间之间可能...原创 2019-01-03 13:45:41 · 125 阅读 · 0 评论 -
牛客网 Day of week (日期打表,模运算)
描述给定一个日期,指出这个日期是星期几?输入描述:一行输入日、月、年输出描述:输出周几Month and Week name in Input/Output:January, February, March, April, May, June, July, August, September, October, November, DecemberSunday, Monday, T...原创 2019-01-02 22:44:54 · 347 阅读 · 0 评论 -
牛客网 反序输出(模拟、清华机试)
题目描述输入任意4个字符(如:abcd), 并按反序输出(如:dcba)输入描述:题目可能包含多组用例,每组用例占一行,包含4个任意的字符。输出描述:对于每组输入,请输出一行反序后的字符串。具体可见样例。示例1输入UpincvYjWJpwcXOA输出nipUjYvcwpJWAOXcSolution#include <iostream>#inclu...原创 2019-02-28 21:14:23 · 233 阅读 · 0 评论 -
牛客网 手机按键(模拟、清华机试)
题目描述按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次。 如果连续两个字符不在同一个按键上,则可直接按,如:ad需要按两下,kz需要按6下 如果连续两字符在同一个按键上,则两个按键之间需要等一段时间,如ac,在按了a之后,需要等一会儿才能按c。 现在假设每按一次需要花费一个时间段,等待时间需要花费两个时间段。 现在给出一串字符...原创 2019-02-28 21:49:18 · 550 阅读 · 0 评论 -
牛客网 C翻转(模拟、北邮机试)
题目描述首先输入一个5 * 5的数组,然后输入一行,这一行有四个数,前两个代表操作类型,后两个数x y代表需操作数据为以x y为左上角的那几个数据。 操作类型有四种: 1 2 表示:90度,顺时针,翻转4个数 1 3 表示:90度,顺时针,翻转9个数 2 2 表示:90度,逆时针,翻转4个数 2 3 表示:90度,逆时针,翻转9个数输入描述:输入有多组数据。每组输入一个5 * 5的...原创 2019-02-20 16:18:47 · 214 阅读 · 0 评论