模拟
文章平均质量分 56
JingleLiA
这个作者很懒,什么都没留下…
展开
-
最小覆盖子串
题目链接:最小覆盖子串题目描述:给你一个字符串 S、一个字符串 T 。请你设计一种算法,可以在 O(n) 的时间复杂度内,从字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入:S = “ADOBECODEBANC”, T = “ABC”输出:“BANC”提示:如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。题目分析:双指针加滑动窗口。在S中用i ,j 维护一个滑动窗口,j不断向右延申,一旦窗口中的值包含T中所有字符时,我们原创 2020-10-30 01:09:07 · 304 阅读 · 0 评论 -
求解一个数的平方根
描述: 求解一个数的平方根,返回值不一定指的是整数import java.util.*;public class Main { static Scanner in = new Scanner(System.in); static double sqrt(double t) { double low=0; double high=t; double mid=low+(high-low)/2; while(high-low原创 2020-10-22 15:58:55 · 382 阅读 · 0 评论 -
单调栈问题合集
接雨水class Solution { public int trap(int[] height) { int ans = 0; int n = height.length,mmin; Stack<Integer> st = new Stack<Integer>(); int pos = 0,width,curh; for(int i = 0;i < n;i++){原创 2020-09-26 17:26:22 · 182 阅读 · 0 评论 -
柱状图中最大的矩形---从暴力到单调栈优化
题目链接:柱状图中最大的矩形题目描述:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10题目分析:矩形的面积是由宽度和高度共同决定的,因此我们可以通过枚举这两个值来求最大值。假如就选择高度好了,对于每个原创 2020-09-25 20:39:29 · 219 阅读 · 0 评论 -
求解集合的子集
题目描述现在有一个没有重复元素的整数集合S,求S的所有子集注意:你给出的子集中的元素必须按升序排列给出的解集中不能出现重复的元素例如:如果S=[1,2,3], 给出的解集应为:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]分析:我们知道一个n个元素的集合的子集个数为2的n次幂减一,利用二进制的思想,我们可以将个数转换为二进制同时再映射到集合中的元素,比如题目的[1,2,3]一共有2^3-1=7种可能,将0-7分别转换成二进制[0,0,原创 2020-09-24 14:44:44 · 505 阅读 · 0 评论 -
443. 压缩字符串
题目链接:压缩字符串题目描述:给定一组字符,使用原地算法将其压缩。压缩后的长度必须始终小于或等于原数组长度。数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。在完成原地修改输入数组后,返回数组的新长度。进阶:你能否仅使用O(1) 空间解决问题?示例 1:输入:[“a”,“a”,“b”,“b”,“c”,“c”,“c”]输出:返回 6 ,输入数组的前 6 个字符应该是:[“a”,“2”,“b”,“2”,“c”,“3”]说明:“aa” 被 “a2” 替代。“bb” 被 “原创 2020-09-17 18:48:37 · 205 阅读 · 0 评论 -
求解方程
题目链接:求解方程题目描述:求解一个给定的方程,将x以字符串"x=#value"的形式返回。该方程仅包含’+’,’ - '操作,变量 x 和其对应系数。如果方程没有解,请返回“No solution”。如果方程有无限解,则返回“Infinite solutions”。如果方程中只有一个解,要保证返回值 x 是一个整数。示例 1:输入: “x+5-3+x=6+x-2”输出: “x=2”示例 2:输入: “x=x”输出: “Infinite solutions”示例 3:输入: “2x原创 2020-09-17 01:00:49 · 289 阅读 · 0 评论 -
划分字母区间
题目链接:划分字母区间代码:class Solution { public List<Integer> partitionLabels(String S) { int[] last = new int[26]; for (int i = 0; i < S.length(); ++i) last[S.charAt(i) - 'a'] = i; int j = 0, anchor = 0;原创 2020-09-16 23:13:10 · 154 阅读 · 0 评论 -
820. 单词的压缩编码
题目链接:单词的压缩编码分析:利用字典树建立一棵后缀树,然后统计存在于字典树上的单词即可,需要注意的一个点是先插入长度大的单词,这样当它的后缀出现时我们才能进行排除class Solution { public int minimumLengthEncoding(String[] words) { int len = 0; Trie trie = new Trie(); Arrays.sort(words, (s1, s2) -> s2.le原创 2020-09-16 16:18:05 · 185 阅读 · 0 评论 -
N进制加法的实现
根据十进制加法的原理,我们实现N进制的加法依旧是从末位开始逐位相加,并累加进位class Solution { static Scanner in = new Scanner(System.in); static String addByJinzhi(String a, String b,int jizhi) { StringBuffer ans = new StringBuffer(); int n = Math.max(a.length(), b.l原创 2020-09-14 12:57:37 · 1076 阅读 · 0 评论 -
剑指 Offer 48. 最长不含重复字符的子字符串
题目链接:不含重复字符的最长子串题目描述:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长原创 2020-08-19 19:59:34 · 183 阅读 · 0 评论 -
区间能交错的最大数--贪心
类似题目:假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排。输入格式:第一行有 1 个正整数k,表示有 k个待安排的活动。接下来的 k行中,每行有 2个正整数,分别表示 k个待安排的活动开始时间和结束时间。时间以 0 点开始的分钟计。输出格式:输出最少会场数题目分析:把每场会议的时间段映射到枢轴上的一段区间,那么求解最小的会议场数就转换成了求解数轴上所有区间里面,有交错的区间里面交错数最多的那个,如下图所示,最多为3,也可以理解为用一条直线去平移,最原创 2020-08-05 12:32:28 · 437 阅读 · 0 评论 -
29. 两数相除
题目链接:两数相除题目描述:给定两个整数,被除数 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-07-31 22:14:05 · 175 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
题目链接:旋转数组的最小数字题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0题目分析:有序数组,二分。。。,利用旋转后的数组特点,最小值处于单调性的转折点,不断逼近最小值所在的区间几个处理细节都写在代码里了代码:c原创 2020-07-22 15:16:02 · 99 阅读 · 0 评论 -
两数之和 II - 输入有序数组
题目链接:输入有序数组题目描述:给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因原创 2020-07-20 18:30:31 · 151 阅读 · 0 评论 -
32. 最长有效括号
题目描述:给定一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长的包含有效括号的子串的长度。示例 1:输入: “(()”输出: 2解释: 最长有效括号子串为 “()”示例 2:输入: “)()())”输出: 4解释: 最长有效括号子串为 “()()”题目分析:用一个栈来维护括号下标,始终保持栈底元素为当前已经遍历过的元素中「最后一个没有被匹配的右括号的下标」,遇到左括号入栈,遇到右括号则弹出栈顶元素与之匹配,如果栈为空,则需要更新栈底元素,不为空就相当于进行了一次匹配并更新ans。代码原创 2020-07-05 21:40:23 · 179 阅读 · 0 评论 -
378. 有序矩阵中第K小的元素
题目链接:有序矩阵中第K小的元素题目描述:给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。示例:matrix = [[ 1, 5, 9],[10, 11, 13],[12, 13, 15]],k = 8,返回 13。提示:你可以假设 k 的值永远是有效的,1 ≤ k ≤ n2 。题目分析:最简单粗暴的直接排序然后取第K个,当然,仍然可以用堆来求解topk问题(维护一个大小为原创 2020-07-02 18:06:53 · 156 阅读 · 0 评论 -
leetcode209长度最小的子数组
题目链接:长度最小的子数组题目描述:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。题目分析:连续子数组和问题,两种思路方案:前缀和或者滑动窗口,下面分别贴出前缀和:利用一个前缀数组来直接计算连续子数组的和,即sums[i]-sums[j]&原创 2020-06-28 20:33:14 · 190 阅读 · 0 评论 -
leetcode面试题模式匹配
题目链接:模式匹配题目描述:你有两个字符串,即pattern和value。 pattern字符串由字母"a"和"b"组成,用于描述字符串中的模式。例如,字符串"catcatgocatgo"匹配模式"aabab"(其中"cat"是"a",“go"是"b”),该字符串也匹配像"a"、"ab"和"b"这样的模式。但需注意"a"和"b"不能同时表示相同的字符串。编写一个方法判断value字符串是否匹配pattern字符串。示例 1:输入: pattern = “abba”, value = “dogcatc原创 2020-06-23 20:15:46 · 199 阅读 · 0 评论 -
最佳观光组合
题目链接:最佳观光组合题目描述:给定正整数数组 A,A[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的距离为 j - i。一对景点(i < j)组成的观光组合的得分为(A[i] + A[j] + i - j):景点的评分之和减去它们两者之间的距离。返回一对观光景点能取得的最高分。示例:输入:[8,1,5,2,6]输出:11解释:i = 0, j = 2, A[i] + A[j] + i - j = 8 + 5 + 0 - 2 = 11提示:2 <= A.原创 2020-06-17 18:39:40 · 214 阅读 · 0 评论 -
转变数组后最接近目标值的数组和
题目链接:转变数组后最接近目标值的数组和题目描述:给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。请注意,答案不一定是 arr 中的数字。示例 1:输入:arr = [4,9,3], target = 10输出:3解释:当选择 value 为 3 时,数组原创 2020-06-14 21:24:29 · 302 阅读 · 0 评论 -
leetcode三数之和--双指针
题目链接:三数之和题目描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]题目分析:关键在于不重复,那么为了不重复,可以先对数组排序,同时在遍历过程中控制循环下标和相邻元素是否相等的判断,达原创 2020-06-12 12:10:33 · 148 阅读 · 0 评论 -
leetcode739每日温度
题目链接:每日温度题目描述:请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。题目分析:对比分原创 2020-06-12 10:20:04 · 136 阅读 · 0 评论 -
荷兰国旗问题
描述:假设数组元素只能取0,1,2三个值,那么将数组调整为00...11..22形式输出(类似于荷兰国旗的三种颜色排列)#include<iostream>#include<cstring>#include<stdio.h>using namespace std;int a[] ={1,0,0,2,1,0,2,1,0,1};int sum = 1...原创 2018-08-04 21:27:37 · 327 阅读 · 0 评论 -
leetcode54顺时针打印矩阵
leetcode54顺时针打印矩阵题目链接顺时针打印矩阵题目描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 100原创 2020-06-05 11:04:15 · 138 阅读 · 0 评论 -
1040. 有几个PAT(25)
字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。现给定字符串,问一共可以形成多少个PAT?输入格式:输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。输出格式:在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,原创 2020-06-05 00:57:54 · 164 阅读 · 0 评论 -
Opposite Task
This problem gives you a flavor the concept of special judge. That means the judge is smart enough to verify your code even though it may print different results. In this problem you are asked to find原创 2017-10-03 14:47:50 · 560 阅读 · 0 评论 -
Ekka Dokka -- 乘积奇数最大偶数最小
Ekka and his friend Dokka decided to buy a cake. They both love cakes and that's why they want to share the cake after buying it. As the name suggested that Ekka is very fond of odd numbers and Dokka原创 2017-10-07 15:31:11 · 513 阅读 · 0 评论 -
Fibsieve`s Fantabulous Birthday
Fibsieve had a fantabulous (yes, it's an actual word) birthday party this year. He had so many gifts that he was actually thinking of not having a party next year.Among these gifts there was an N x原创 2017-10-03 16:24:14 · 406 阅读 · 0 评论 -
False Ordering
We define b is a Divisor of a number a if a is divisible by b. So, the divisors of 12 are 1, 2, 3, 4, 6, 12. So, 12 has 6 divisors.Now you have to order all the integers from 1 to 1000. x will come原创 2017-10-02 21:59:19 · 486 阅读 · 0 评论 -
Digits of Factorial
Factorial of an integer is defined by the following functionf(0) = 1f(n) = f(n - 1) * n, if(n > 0)So, factorial of 5 is 120. But in different bases, the factorial may be different. For example,原创 2017-10-02 18:08:34 · 412 阅读 · 0 评论 -
走格子
有编号1-n的n个格子,机器人从1号格子顺序向后走,一直走到n号格子,并需要从n号格子走出去。机器人有一个初始能量,每个格子对应一个整数Aii,表示这个格子的能量值。如果Aii > 0,机器人走到这个格子能够获取Aii个能量,如果Aii 例如:n = 5。{1,-2,-1,3,4} 最少需要2个初始能量,才能从1号走到5号格子。途中的能量变化如下原创 2018-02-02 12:08:47 · 536 阅读 · 0 评论 -
Discover the Web
Standard web browsers contain features to move backward and forward among the pages recently visited. One way to implement these features is to use two stacks to keep track of the pages that can be re原创 2017-10-05 22:44:34 · 384 阅读 · 0 评论 -
数字1的数量
给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数。 例如:n = 12,包含了5个1。1,10,12共包含3个1,11包含2个1,总共5个1。 Input输入N(1 Output输出包含1的个数Sample Input12Sample Output5分析:直接去每个统计是不现实的,肯定会超,那么就需要分析出规律了,把问题拆分来原创 2018-02-02 20:32:01 · 748 阅读 · 1 评论 -
矩阵中不重复的元素
一个m*n的矩阵。 该矩阵的第一列是a^b,(a+1)^b,.....(a + n - 1)^b 第二列是a^(b+1),(a+1)^(b+1),.....(a + n - 1)^(b+1) ....... 第m列是a^(b + m - 1),(a+1)^(b + m - 1),.....(a + n - 1)^(b + m - 1) (a^b表示a的b次方) 下面是一个4原创 2018-02-02 15:43:08 · 340 阅读 · 0 评论 -
1 10 100 1000
1,10,100,1000...组成序列1101001000...,求这个序列的第N位是0还是1。 Input第1行:一个数T,表示后面用作输入测试的数的数量。(1 第2 - T + 1行:每行1个数N。(1 Output共T行,如果该位是0,输出0,如果该位是1,输出1。Sample Input3123Sample Output110原创 2018-01-25 22:19:07 · 470 阅读 · 0 评论 -
两个数的平方和
给出一个整数N,将N表示为2个整数i j的平方和(i 例如:N = 130,130 = 3^2 + 11^2 = 7^2 + 9^2 (注:3 11同11 3算1种) Input一个数N(1 Output共K行:每行2个数,i j,表示N = i^2 + j^2(0 如果无法分解为2个数的平方和,则输出No SolutionSample Input130Samp原创 2018-01-25 14:47:35 · 1933 阅读 · 0 评论 -
水仙花数
水仙花数是指一个 n 位数 ( n >= 3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153) 给出一个整数M,求 >= M的最小的水仙花数。 Input一个整数M(10 Output输出>= M的最小的水仙花数Sample Input99Sample Output153分析:由于这个题数据范围很小,所以原创 2018-01-25 12:51:57 · 351 阅读 · 0 评论 -
Flipping Burned Pancakes --模拟
The cook at the Frobbozz Magic Pancake House sometimes falls asleep on the job while cooking pancakes. As a result, one side of a stack of pancakes is often burned. Clearly, it is bad business to serv原创 2017-11-16 21:22:52 · 464 阅读 · 0 评论 -
犯罪嫌疑人--逻辑推理
福尔摩斯是个大侦探,他总是在解决疑难案件。这一次的案件也不例外,案件是这样的:有编号为1到N的N位嫌疑犯,他们其中有一个犯了罪,然后每个嫌疑犯都被询问,“哪一个人犯了罪?”犯罪嫌疑人的答案只能“编号ai的嫌疑犯犯了罪”或者“编号ai的嫌疑犯没有犯罪”。当然嫌疑犯也可以说他自己(ai = i).福尔摩斯凭着他敏锐的侦探直觉,确定地对华生说,只有M个人说了真话,其余人都是说谎。然后就没有然后了,但原创 2017-10-06 22:28:23 · 1454 阅读 · 0 评论