自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(110)
  • 收藏
  • 关注

原创 JZ18 删除链表的节点

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。1.此题对比原题有改动2.题目保证链表中节点的值互不相同3.该题只会输出返回的链表和结果做对比,所以若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点数据范围:0<=链表节点值<=100000<=链表长度<=10000方法一:简单哈,先哑节点不多说了class Solution {public: ListNode* de..

2022-03-23 21:12:34 68

原创 JZ17 打印从1到最大的n位数

输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。1. 用返回一个整数列表来代替打印2. n 为正整数,0 < n <= 5方法一:除了暴力还能怎样class Solution {public: vector<int> printNumbers(int n) { int max = pow(10,n); vector<int> ans;...

2022-03-23 21:11:29 274

原创 JZ16 数值的整数次方

实现函数 double Power(double base, int exponent),求base的exponent次方。注意:1.保证base和exponent不同时为0。2.不得使用库函数,同时不需要考虑大数问题3.有特殊判题,不用考虑小数点后面0的位数。方法一:老传统,先暴力来一波(可惜时间太长class Solution {public: double Power(double b, int n) { if (n < 0) { ...

2022-03-23 20:43:08 2799

原创 JZ15 二进制中1的个数

输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。数据范围:- 2^{31} <= n <= 2^{31}-1−231<=n<=231−1即范围为:-2147483648<= n <= 2147483647−2147483648<=n<=2147483647方法一:使用&运算符,每次将1右移一位(<<。class Solution {public: int NumberOf1(int ...

2022-03-23 17:08:53 214

原创 JZ14 剪绳子

给你一根长度为 n 的绳子,请把绳子剪成整数长的 m 段( m 、 n 都是整数, n > 1 并且 m > 1 , m <= n ),每段绳子的长度记为 k[1],...,k[m] 。请问 k[1]*k[2]*...*k[m] 可能的最大乘积是多少?例如,当绳子的长度是 8 时,我们把它剪成长度分别为 2、3、3 的三段,此时得到的最大乘积是 18 。数据范围:2 \le n \le 602≤n≤60进阶:空间复杂度O(1)O(1),时间复杂度O(n)O(n)方法一:暴力递...

2022-03-22 17:51:35 1577

原创 JZ13 机器人的运动范围

地上有一个 rows 行和 cols 列的方格。坐标从 [0,0] 到 [rows-1,cols-1] 。一个机器人从坐标 [0,0] 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 threshold 的格子。 例如,当threshold为 18 时,机器人能够进入方格 [35,37] ,因为 3+5+3+7 = 18。但是,它不能进入方格 [35,38] ,因为 3+5+3+8 = 19 。请问该机器人能够达到多少个格子?方法一:深度搜索...

2022-03-22 16:41:36 83

原创 JZ12 矩阵中的路径

描述请设计一个函数,用来判断在一个n乘m的矩阵中是否存在一条包含某长度为len的字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。数据范围:0 \le n,m \le 20\0≤n,m≤20,1\le len \le 25\1≤len≤25方法一:深度搜索,递归class Solution {public: bool hasPath(vector<ve...

2022-03-22 15:28:16 558

原创 JZ11 旋转数组的最小数字

描述有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。数据范围:1 \le n \le 100001≤n≤10000,数组中任意元素的值: 0 \le val \le 100000≤val≤10000要求:空间复杂度:O(1)O(1) ,时间复杂度:O(logn)O(logn)方法一:二分法,

2022-03-22 14:40:17 102

原创 JZ10 斐波那契数列

大家都知道斐波那契数列,现在要求输入一个正整数 n ,请你输出斐波那契数列的第 n 项。斐波那契数列是一个满足 fib(x)=\left\{ \begin{array}{rcl} 1 & {x=1,2}\\ fib(x-1)+fib(x-2) &{x>2}\\ \end{array} \right.fib(x)={1fib(x−1)+fib(x−2)​x=1,2x>2​ 的数列数据范围:1\leq n\leq 401≤n≤40要求:空间复杂度 O(1)O(1),时间复

2022-03-22 09:34:14 85

原创 JZ9 用两个栈实现队列

描述用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。数据范围:n\le1000n≤1000要求:存储n个元素的空间复杂度为O(n)O(n),插入与删除的时间复杂度都是O(1)O(1)方法一:写过很多次了,经典老题,闭着眼睛写class Solution{public: void push(int node) { ...

2022-03-22 09:22:37 117

原创 JZ8 二叉树的下一个结点

描述给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示方法一:暴力解法,中序遍历一遍二叉树,把顺序记录在数组中,然后找到指定节点,返回数组中下一个节点即可(有概率时间通不过class Solution {public: void middle(TreeLinkNode* root,vecto...

2022-03-22 09:06:53 124

原创 JZ7 重建二叉树

给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。提示:1.vin.length ==pre.length2.pre 和 vin均无重复元素3.vin出现的元素均出现在pre里4.只需要返回根结点,系统会自动输出整颗树做答案对比数据范围:n \le 2000n≤2000,节点的值-10000 \le val...

2022-03-22 08:49:24 182

原创 JZ5 替换空格

请实现一个函数,将一个字符串s中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。数据范围:0 \le len(s) \le 1000 \0≤len(s)≤1000 。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。方法一:新建一个字符串,遍历一遍给出的字符串,判断就行。class Solution {public: string replaceSpace(string s) { ...

2022-03-21 19:20:52 312

原创 JZ4 二维数组中的查找

在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]给定 target = 7,返回 true。给定 target = 3,返回 false。数据范围:矩阵的长宽满足0 \le n,m \le 5000≤n,m≤500, 矩阵中的值..

2022-03-21 16:28:17 110

原创 JZ3 数组中重复的数字

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1数据范围:0\le n \le 10000 \0≤n≤10000进阶:时间复杂度O(n)\O(n) ,空间复杂度O(n)\O(n)方法一:这种题散哈希还是非常合适的class Solution {public:

2022-03-21 15:32:53 242

原创 JZ6 从尾到头打印链表

输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。如输入{1,2,3}的链表如下图:返回一个数组为[3,2,1]0 <= 链表长度 <= 10000方法一:正序遍历一遍链表用栈stack储存,利用栈的FILO性质class Solution {public:vector<int> printListFromTailToHead(ListNode* head) {vector<int&g...

2022-03-21 15:30:34 620

原创 每日一题15

给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。方法一:跟每日一题14很相似,先排序,再双指针。classSolution{public:voidisans(intsum,int*ans,inttarget){if(abs(sum-target)<abs(*ans-target)){...

2022-03-18 16:16:58 195

原创 每日一题14

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。方法一:曾设想使用三层循环来暴力求解,但发现时间复杂度过高并且要求不重复的三元组还需要使用哈希,代码也复杂。 优化后可以使用两层循环,第二层循环加双指针,可以更好的完成classSolution{public:vector<vector<int>>t...

2022-03-18 14:47:50 244

原创 每日一题13

你的任务是为一个很受欢迎的银行设计一款程序,以自动化执行所有传入的交易(转账,存款和取款)。银行共有 n 个账户,编号从 1 到 n 。每个账号的初始余额存储在一个下标从 0 开始的整数数组 balance中,其中第 (i + 1) 个账户的初始余额是 balance[i] 。请你执行所有 有效的 交易。如果满足下面全部条件,则交易 有效 :指定的账户数量在 1 和 n 之间,且取款或者转账需要的钱的总数 小于或者等于 账户余额。实现 Bank 类:Bank(long[] balance).

2022-03-18 13:41:22 332

原创 每日一题12

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。方法一:遍历法(雾classSolution{public:stringlongestCommonPrefix(vector<string>&strs){stringans="";stringminstr=*min_element(strs.begin(),strs.end());intn=...

2022-03-17 17:04:01 199

原创 每日一题11

给定一个长度为 n 的整数数组height。有n条垂线,第 i 条线的两个端点是(i, 0)和(i, height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。方法一:暴力解法(果然超时间了classSolution{public:intmaxArea(vector<int>&height){intmaxc=0;...

2022-03-17 16:43:17 406

原创 每日一题10

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。方法一:直接反转整个数,判断是否与原数相等classSolution{public:boolisPalindrome(intx){if(x<10&&x>=0){returntrue;...

2022-03-17 15:15:12 99

原创 每日一题9

请你来实现一个myAtoi(string s)函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步骤读入的这些数字转换为整数(即,"123"...

2022-03-17 14:57:23 69

原创 每日一题8

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−231,231− 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。方法一:代码好理解,不写注释了classSolution{public:intrev=0;intreverse(intx){while(x!=0){inttemp=x%10;...

2022-03-17 11:20:15 113

原创 每日一题7

给出一个字符串数组 words 组成的一本英语词典。返回 words 中最长的一个单词,该单词是由 words 词典中其他单词逐步添加一个字母组成。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。方法一:哈希集合,(简单题,大雾classSolution{public://将字典中字符串按长度的升序排列,长度相等时按顺序的降序排列stringlongestWord(vector<string>&words){...

2022-03-17 11:18:57 206

原创 每日一题6

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);方法一:二维矩阵,写的有...

2022-03-16 21:44:20 213

原创 每日一题5

给你一个字符串s,找到s中最长的回文子串。方法一,暴力解法(似乎时间太长了哈哈classSolution{public:boolispalindrome(strings){for(inti=0;i<s.size()/2;i++){if(s[i]!=s[s.size()-1-i]){returnfalse;}}...

2022-03-16 16:02:20 116

原创 每日一题6

请你设计并实现一个满足LRU (最近最少使用) 缓存 约束的数据结构。实现 LRUCache 类:LRUCache(int capacity) 以 正整数 作为容量capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value)如果关键字key 已经存在,则变更其数据值value ;如果不存在,则向缓存中插入该组key-value 。如果插入操作导致关键...

2022-03-16 16:01:58 394

原创 每日一题4

给定两个大小分别为 m 和 n 的正序(从小到大)数组nums1 和nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。方法一:自己的暴力解法,耗时还可以classSolution{public:doublefindMedianSortedArrays(vector<int>&nums1,vector<int>&nums2){vector<...

2022-03-15 14:49:03 120

原创 每日一题3

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。方法一:自己的暴力解法,用时似乎还不错,(不算太暴力?)classSolution{public:ListNode*addTwoNumbers(ListNode*l1,ListNode*l2){intn1=0;...

2022-03-15 14:15:03 1345

原创 每日一题2

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。方法一:滑动窗口,用一个哈希表记录窗口中的元素。classSolution{public:intlengthOfLongestSubstring(strings){unordered_map<char,int>map1;intn=s.size();intrk=-1;intans=0;...

2022-03-14 14:37:41 179

原创 每日一题1

假设 Andy 和 Doris 想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设答案总是存在。方法一:我自己的暴力解法,两个for循环因此时间复杂度为O(N2)。classSolution{public:vector<string>findRestaurant(vector<string>&amp...

2022-03-14 13:23:35 87

原创 图论每日一题1

有一幅以m x n的二维整数数组表示的图画image,其中image[i][j]表示该图画的像素值大小。你也被给予三个整数 sr ,sc 和 newColor 。你应该从像素image[sr][sc]开始对图像进行 上色填充 。为了完成 上色工作 ,从初始像素开始,记录初始坐标的 上下左右四个方向上 像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应 四个方向上 像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为...

2022-03-13 18:32:48 156

原创 数据结构每日一题33

给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”方法一:递归classSolution{public:TreeNode*ancestor(TreeNode*root,TreeNode*p,TreeNode*q){if(p->val<root->v...

2022-03-13 16:45:20 71

原创 数据结构每日一题32

给定一个二叉搜索树 root 和一个目标结果 k,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。方法一:先层序遍历一遍二叉树,将每个节点的值放入哈希表中,每遍历一个节点,判断当前节点的值是否与哈希表中的某个值相加等于目标值。classSolution{public:boolfindTarget(TreeNode*root,intk){if(root==nullptr){returnfal...

2022-03-13 16:21:48 905

原创 数据结构每日一题31

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。方法一:使用递归。使用上界uper,下界lower,递归时将左子树传入递归函数时上界变为根节点的值,将右节点传入递归函数时,下界为根节点的值。classSolution{public:boolisBST(TreeNode*root,longuper,lon...

2022-03-13 13:30:59 143

原创 数据结构每日一题30

给定二叉搜索树(BST)的根节点root和要插入树中的值value,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。方法一:classSolution{public:TreeNode*insertIntoBST(TreeNode*root,intval){if(root...

2022-03-12 14:06:05 131

原创 数据结构每日一题29

给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。方法一:用中/前/后序遍历一遍树,找到val值相等的root返回即可classSolution{public:TreeNode*ans;TreeNode*searchBST(TreeNode*root,intval){if(root==NULL){...

2022-03-12 12:44:23 520

原创 数据结构每日一题28

给你二叉树的根节点root 和一个表示目标和的整数targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。方法一:广度搜索,用队列,每一层将当前节点到根节点的路径和记录下来,当来到叶子节点时,判断是否等于目标和。classSolution{public:boolhasPathSum(TreeNode*root,i...

2022-03-11 14:07:09 247

原创 数据结构每日一题27

给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。方法一:递归classSolution{public:TreeNode*invertTree(TreeNode*root){if(root==NULL)returnroot;TreeNode*temp=root->left;root->left=root->right;root->rig...

2022-03-11 13:30:37 149

空空如也

空空如也

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

TA关注的人

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