自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 问答 (2)
  • 收藏
  • 关注

原创 338.比特位计数

#include<iostream>#include<string>#include<vector>using namespace std;vector<int> countBits(int n);int main(){ vector<int> a={7,6,4,3,1}; //cout <<countBits(2)<< endl; return 0;}vector<int&gt

2022-02-15 14:59:51 306

原创 118.杨辉三角形

#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;int climbStairs(int n);int main(){ cout <<climbStairs(10)<< endl; return 0;}int climbStairs(int n){ int pre1=

2022-02-13 16:24:57 156

原创 70.爬楼梯

#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;int climbStairs(int n);int main(){ cout <<climbStairs(10)<< endl; return 0;}int climbStairs(int n){ int pre1=

2022-02-13 16:24:12 140

原创 53.最大子数组和

1.分治法#include<iostream>#include<string>#include<vector>using namespace std;int maxSubArray(vector<int>& nums);int getmax(vector<int>a,int b,int c);int main(){ vector<int> a={-2,-1,-3,4,-1,2,1,-5,4}; c

2022-02-13 16:22:03 133

原创 20.有效括号

#include<iostream>#include<string>#include<unordered_map>#include<stack>using namespace std;bool isValid(string s);int main(){ cout <<isValid("]")<< endl; return 0;}bool isValid(string s) { int n=s.

2022-02-13 16:18:58 118

原创 13.罗马数转整型

#include<iostream>#include<string>#include<unordered_map>using namespace std;int romanToInt(string s);int main(){ cout <<romanToInt("CMLII")<< endl; return 0;}int romanToInt(string s) { unordered_map<cha

2022-02-13 16:17:34 275

原创 9.回文数

#include<iostream>#include<string>using namespace std;bool isPalindrome(int x);int main(){ cout <<isPalindrome(10)<< endl; return 0;}bool isPalindrome(int x){ int t=0; if(x<0||x%10==0&&x!=0) ret

2022-02-13 16:16:12 59

原创 1.两数之和

#include<iostream>#include<unordered_map>#include<vector>using namespace std;vector<int> twoSum(vector<int>& nums, int target);int main(){ vector<int> a={3,2,4}; vector<int> c=twoSum(a,6) ; co

2022-02-13 16:13:54 128

原创 1629.按键持续时间

#include<iostream>#include<string>#include<vector>using namespace std;char slowestKey(vector<int>& releaseTimes, string keysPressed);int main(){ vector<int> a={9,26,49,50}; string b="cbcd"; cout <<s

2022-02-13 16:12:04 76

原创 306.累加数

#include<iostream>#include<string>using namespace std;bool isAdditiveNumber(string num);bool check(int i,int j,string s);string add(int a,int b,int c,int d,string s);int main(){ string a="199"; string b="123"; cout << i

2022-02-13 16:07:41 256

原创 219.重复元素

#include<iostream>#include<unordered_map>#include<vector>using namespace std;bool containsNearbyDuplicate(vector<int>& nums, int k);int main(){ vector<int> a={0,1,2,3,2,5}; cout <<containsNearbyDuplicat

2022-02-13 16:04:33 147

原创 【无标题】

给定两个以 升序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k 。定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来自 nums2 。请找到和最小的 k 个数对 (u1,v1), (u2,v2) … (uk,vk) 。/*22.1.14寻找两个升序数组组成的(x ,y)最小的k个组合1.该算法的思想就是每次从已经知道的n个小的组合中估算所有可能出现最小的组合然后选择出最小的。2.因为是升序数组,所以假设有(a1,b1)(a2,b2)…(an,bn)

2022-01-16 22:39:26 355

原创 22.1.2是否存在三升序列

给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。/*22.1.12判断一个数组是否具有三升序列1.该算法的核心思想就是如果一个数组存在三升序列,那意味着其中必然有一个元素,它左边所以元素的最小值小于该元素,右边所有元素的最大值大于该元素。2.所有难点在于如何求每

2022-01-15 21:21:50 265

原创 22.1.6简化路径

给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,’//’)都被视为单个斜杠 ‘/’ 。 对于此问题,任何其他格式的点(例如,’…’)均被视为文件/目录名称。请注意,返回的 规范路径 必须遵循下述格式:始终以斜杠 ‘/’ 开头。两个目录

2022-01-15 20:25:45 70

原创 22.1.4猫和老鼠

两位玩家分别扮演猫和老鼠,在一张 无向 图上进行游戏,两人轮流行动。图的形式是:graph[a] 是一个列表,由满足 ab 是图中的一条边的所有节点 b 组成。老鼠从节点 1 开始,第一个出发;猫从节点 2 开始,第二个出发。在节点 0 处有一个洞。在每个玩家的行动中,他们 必须 沿着图中与所在当前位置连通的一条边移动。例如,如果老鼠在节点 1 ,那么它必须移动到 graph[1] 中的任一节点。此外,猫无法移动到洞中(节点 0)。然后,游戏在出现以下三种情形之一时结束:如果猫和老鼠出现在同一个

2022-01-15 20:03:33 2202

原创 22.1.3计算周几

/*1.本题的核心思想在于把个别不同的情况统一看成常规情况,如闰年,然后把少的加回来而且如果当前年是闰年,那也是必须是过了2月才会+1天。2.蔡勒公式1582年10月4日之后:w=y1+(y1/4)+(c/4)-2c+(26(m+1)/10)+d-1; 1582年10月4日以及之前:w=y1+y/4+c/4-2*c+13*(m+1)/5+d+2; 输出:(w%7+7)%7 (为了确保结果为正数) 说明: w为星期, 0-星期日,1-星期一,..........6

2022-01-15 20:01:39 100

原创 22.1.2左右删元素

列表 arr 由在范围 [1, n] 中的所有整数组成,并按严格递增排序。请你对 arr 应用下述算法:从左到右,删除第一个数字,然后每隔一个数字删除一个,直到到达列表末尾。重复上面的步骤,但这次是从右到左。也就是,删除最右侧的数字,然后剩下的数字每隔一个删除一个。不断重复这两步,从左到右和从右到左交替进行,直到只剩下一个数字。给你整数 n ,返回 arr 最后剩下的数字。/* 2022.1.21.本题主要的思想在于要求只剩下一个元素,也就最后一个元素也是一个数列那么只要我们每次都研究数列

2022-01-15 19:20:10 458

原创 test

abc

2021-12-27 12:07:18 186 2

原创 8.栈实现队列

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和

2021-11-22 22:55:44 166

原创 18.相似字符串组

相似字符串组如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等,那么称 X 和 Y 两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。例如,“tars” 和 “rats” 是相似的 (交换 0 与 2 的位置); “rats” 和 “arts” 也是相似的,但是 “star” 不与 “tars”,“rats”,或 “arts” 相似。总之,它们通过相似性形成了两个关联组:{“tars”, “rats”, “arts”} 和 {“star”}。注意,“tars” 和 “a

2021-11-21 00:10:48 193

原创 17.滑动窗口最大值

滑动窗口最大值给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。思路:就按照题意对数组进行每次k个元素的遍历,保存当前遍历的最大值,直到整个数组遍历完成。#include<iostream>using namespace std;int* maxSlidingWindow(int num[],int k,int n);int main(){

2021-11-20 21:52:13 82

原创 16.网络延迟时间

网络延迟时间有 n 个网络节点,标记为 1 到 n。给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。现在,从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1 。示例 1:输入:times = [[2,1,1],[2,3,1],[3,4,1]], n = 4, k = 2输出:2示例 2:输入:

2021-11-20 21:32:30 720

原创 15.省份数量

省份数量有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConnected[i][j] = 1 表示第 i 个城市和第 j 个城市直接相连,而 isConnected[i][j] = 0 表示二者不直接相连。返回矩阵中 省份 的数量。示例 1:输入:isConne

2021-11-20 21:08:05 339

原创 14.最短连续子数组

Topic给定一个非空且只包含非负数的整数数组 nums,数组的度的定义是指数组里任一元素出现频数的最大值。你的任务是在 nums 中找到与 nums 拥有相同大小的度的最短连续子数组,返回其长度。Example_1输入:[1, 2, 2, 3, 1]输出:2解释:输入数组的度是2,因为元素1和2的出现频数最大,均为2.连续子数组里面拥有相同度的有如下所示:[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3],

2021-11-20 20:53:58 364

原创 13.搜索二维矩阵 II

搜索二维矩阵 II编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例 1:输入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5输出:true示例 2:输入:matrix = [[1,4,7,11,15],[2,5,8,12,1

2021-11-20 20:22:55 323

原创 10.猜数字大小

. 猜数字大小猜数字游戏的规则如下:每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0):-1:我选出的数字比你猜的数字小 pick < num1:我选出的数字比你猜的数字大 pick > num0:我选出的数字和你猜的数字一样。恭喜!你猜对了!pick

2021-11-20 19:59:43 206

原创 9.子序列

判断子序列给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。思路:就像题中描述一般子序列是需要顺序的,所以当匹配字符串和目标字符串的某一位匹配后,那么匹配字符串的下一个字符要和目标字符串最后一次匹配成功的位置之后,所以可以设置一个变量用于记录记录当前最后一次匹配成功的位置。如果匹配字符遍历到了最后说明匹配成功。#include&

2021-11-20 19:47:55 223

原创 7.有效异位词

有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。思路:利用两个数组来分别统计两个字符串中每个字符出现的次数,该题中的字符都是小写字母所以数据组最大长度为26,利用字母在字母表中的顺序,在数组相应下标的项统计其出现的数量。然后比较两个数组的值是否相等即可判断。#include<iostream>#include<string>using nam

2021-11-20 19:25:37 278

原创 6.倒序二进制数组值

颠倒给定的 32 位无符号整数的二进制位。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。思路:该题中的二进制数组我用的是一个字符串没有直接用位移运算,而是用了函数的递归递归调用到达二进制的

2021-11-20 00:42:05 379

原创 5.寻找数组下标

寻找数组的中心下标给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。思路:就根据题意为了找中心下标就从左到右一个一个尝试假设第i个元素是中心元素那么分别算它的左边元素和以及右边元素和再比较是否相等

2021-11-20 00:08:22 1375

原创 11.猜数字2

猜数字大小 II我们正在玩一个猜数游戏,游戏规则如下:我从 1 到 n 之间选择一个数字,你来猜我选了哪个数字。每次你猜错了,我都会告诉你,我选的数字比你的大了或者小了。然而,当你猜了数字 x 并且猜错了的时候,你需要支付金额为 x 的现金。直到你猜到我选的数字,你才算赢得了这个游戏。示例:n = 10, 我选择了8.第一轮: 你猜我选择的数字是5,我会告诉你,我的数字更大一些,然后你需要支付5块。第二轮: 你猜是7,我告诉你,我的数字更大一些,你支付7块。第三轮: 你猜是9,我告诉你,我

2021-11-10 23:09:03 186

原创 12.最长子序列

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输入:nums = [7,7,7,7,7,7,7]

2021-11-09 22:53:12 110

原创 3.验证回文串

验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。思路:采用双指针法先把字母和数字拷贝到一个字符数组中,然后利用一个指向数组的首地址,一个指向数组的末端,然后开始遍历,直到前面的指针大于后面的,若所以的元素都相同则符合条件。#include<iostream>#include<string>using namespace std;bool backword(string a);.

2021-11-01 22:09:18 118

原创 4.托普利茨矩阵

给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵 。思路:首先设置一个标志位,外层循环第一行元素,在外层循环的基础上行号和列号循环加一,直到达到行列的边界,若出现不相等的情况这改变标志位,若标志位改变这不符合条件返回false。#include<iostream>using namespace std;bool islb(int m,in

2021-10-31 23:15:57 171

原创 2.最后一个单词的长度

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。思路:可以直接从词组的最后面开始扫描每扫描一个字符,计数器器加一,直到遇到空格返回。#include<iostream>#include<string>using namespace std;int words(string t);int main(){ cout << words("Hello

2021-10-31 23:03:42 39

原创 1.模式匹配

实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。思路:这是一个典型的模式匹配,就是用一个字符串匹配另

2021-10-31 22:55:47 93

原创 24.上台阶

小明刚刚看完电影《第 39 级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是 39 级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上 1 个或 2 个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完 39 级台阶,有多少种不同的上法呢?请你利用计算机的优势,帮助小明寻找答案。思想:这个题类似于鸡兔同笼问题但是对应的方程并不是唯一解,约束条件是步数和为偶数所以直接可以用蛮力法穷举出可行解。#include<iostream>.

2021-10-31 22:29:40 62

原创 23.内部距离

两个字母之间的距离定义为它们在字母表中位置的距离。例如 A 和 C 的距离为 2,L 和 Q 的距离为 5。对于一个字符串,我们称字符串中两两字符之间的距离之和为字符串的内部距离。例如:ZOO 的内部距离为 22,其中 Z 和 O 的距离为 11。请问,WATJKJDXRGZNXYTW 的内部距离是多少?思路:其实通过字符的ASCALL码的差值即可知道两个字符的距离。通过一个循环的嵌套即可求得问题。不过要注意的是这个差值可能是负数所以要判断一下是否大于0。#include<iostre.

2021-10-29 23:10:22 132

原创 22.几点几分

问题描述现在时间是 a 点 b 分,请问 t 分钟后,是几点几分?输入格式输入的第一行包含一个整数 a。第二行包含一个整数 b。第三行包含一个整数 t。输出格式输出第一行包含一个整数,表示结果是几点。第二行包含一个整数,表示结果是几分。样例输入320165样例输出65样例输入320175样例输出615数据规模和约定对于所有评测用例,0 <= a <= 23, 0 <= b <= 59, 0 <= t, t 分钟后还是在当天。思.

2021-10-29 23:01:54 342

原创 20.门牌号

小蓝要为一条街的住户制作门牌号。这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1个字符 7。请问要制作所有的 1 到 4040号门牌,总共需要多少个字符 2?思想:从1到4040遍历每个数的各个位若是等于2则计数器加一。#include<iostream>using names.

2021-10-29 22:55:59 479

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除