自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 270.二叉搜索树中第K小的元素 代码

vec.pop_front(): 弹出前面的元素,可做队列。使用vector作为栈,push_back()入栈。vec.back();可直接访问最后一个元素。vec[vec.size()-1] 访问栈顶。vec.pop_back() 出栈。实际上是树的中序遍历。

2024-03-27 17:50:23 184 1

原创 PTA 数列求和加强版代码

使用string组合字符串输出再逆序输出会超时,直接用char数组保存结果反向输出,char数组申请100001个空间即可。

2024-03-27 17:10:14 288

原创 Offer II 016. 不含重复字符的最长子字符串

题目描述给定一个字符串 s ,请你找出其中不含有重复字符的 最长连续子字符串 的长度。滑动窗口(滑,就嗯滑)利用hashmap来判断是否重复出现代码#include<hash_map>using namespace __gnu_cxx;class Solution {public: int lengthOfLongestSubstring(string s) { hash_map<char,int> hashmap; int ma

2022-03-06 16:41:35 184

原创 Offer II 015. 字符串中的所有变位词

题目描述给定两个字符串 s 和 p,找到 s 中所有 p 的 变位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。变位词 指字母相同,但排列不同的字符串。(和Offer II 014 一个思路,找到一个数组后把左边界+1继续寻找即可)代码#include<hash_map>using namespace __gnu_cxx;class Solution {public: vector<int> findAnagrams(string s, strin

2022-03-06 15:58:06 170

原创 Offer II 014. 字符串中的变位词

题目描述给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的某个变位词。换句话说,第一个字符串的排列之一是第二个字符串的 子串 。示例 1:输入: s1 = “ab” s2 = “eidbaooo”输出: True解释: s2 包含 s1 的排列之一 (“ba”).示例 2:输入: s1= “ab” s2 = “eidboaoo”输出: False分析首先对s1中每个字符出现的数量存储在hashmap中,对s2进行滑动窗口,窗口达到s1的长度时,此时窗口内即为s1

2022-03-02 16:58:54 222

原创 Offer II 013. 二维子矩阵的和

题目描述给定一个二维矩阵 matrix,以下类型的多个请求:计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。实现 NumMatrix 类:NumMatrix(int[][] matrix) 给定整数矩阵 matrix 进行初始化int sumRegion(int row1, int col1, int row2, int col2) 返回左上角 (row1, col1) 、右下角 (row2, col2) 的子矩阵的元素总和。分

2022-03-02 15:33:15 526

原创 Offer II 012. 左右两边子数组的和相等

题目描述给你一个整数数组 nums ,请计算数组的 中心下标 。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。C++代码没啥好说的,暴力就完了class Solution {public: int pivotIndex(vector&

2022-03-02 14:29:02 526

原创 Offer II 011. 0 和 1 个数相同的子数组

题目描述给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。示例 1:输入: nums = [0,1]输出: 2说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。示例 2:输入: nums = [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量 0 和 1 的最长连续子数组。提示:1 <= nums.length <= 105nums[i] 不是 0 就是 1分析将

2022-03-02 14:10:13 443

原创 Offer II 010. 和为 k 的子数组

题目描述*给定一个整数数组和一个整数 k ,请找到该数组中和为 k 的连续子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2解释: 此题 [1,1] 与 [1,1] 为两种不同的情况示例 2 :输入:nums = [1,2,3], k = 3输出: 2提示:1 <= nums.length <= 2 * 104-1000 <= nums[i] <= 1000-107 <= k <= 107*解题思路对于每个元素

2022-03-02 13:01:24 149

原创 Offer II 009. 乘积小于 K 的子数组

题目描述给定一个正整数数组 nums和整数 k ,请找出该数组内乘积小于 k 的连续的子数组的个数。示例 1:输入: nums = [10,5,2,6], k = 100输出: 8解释: 8 个乘积小于 100 的子数组分别为: [10], [5], [2], [6], [10,5], [5,2], [2,6], [5,2,6]。需要注意的是 [10,5,2] 并不是乘积小于100的子数组。示例 2:输入: nums = [1,2,3], k = 0输出: 0分析以第n个元素为结尾的连

2022-03-01 21:20:52 170

原创 Offer II 008. 和大于等于 target 的最短子数组

题目描述给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。解题思路要求时间复杂度O(N),所以一次循环扫描数组,类似滑动窗口,将每个元素插入数组后面并计算当前,当总和大于等于target时,从前往后删除元素直到数组内的元素之和刚好大于等于target,计算当前长度和最小长度比较,保留最小长度。遍历

2022-03-01 15:28:12 240

原创 Offer II 007. 数组中和为 0 的三个数

题目描述给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a ,b ,c ,使得 a + b + c = 0 ?请找出所有和为 0 且 不重复 的三元组。0 <= nums.length <= 3000-105 <= nums[i] <= 105解题思路(参考006)a+b+c = 0 转化为 a+b = -c ,即对于每个常数c,在数组中找到两个不同的数a,b,使得a+b =c。 用sort将向量升序排列,c<=b<=a,选取不

2022-03-01 14:57:33 131

原创 Offer II 006. 排序数组中两个数字之和

给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 0 开始计数 ,所以答案数组应当满足 0 <= answer[0] < answer[1] < numbers.length 。假设数组中存在且只存在一对符合条件的数字,同时一个数字不能使用两次。一.二分查找(慢)class Solution {public: vec

2022-03-01 11:29:08 73

原创 Offer II 005. 单词长度的最大乘积

题目描述:给定一个字符串数组 words,请计算当两个字符串 words[i] 和 words[j] 不包含相同字符时,它们长度的乘积的最大值。假设字符串中只包含英语的小写字母。如果没有不包含相同字符的一对字符串,返回 0。2 <= words.length <= 10001 <= words[i].length <= 1000words[i] 仅包含小写字母解析:26个小写字母对应26位数字,用26位二进制表示,两个字符串不包含相同的字符,即两个字符串对应的二进制中,1

2022-02-28 20:08:54 107

原创 Offer II 004. 只出现一次的数字

*题目描述给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。输入:nums = [2,2,3,2]输出:3*解析:若每个相同数字出现三次,则二进制下,从第1位到第32位分开计算,所有数字第i位相加,即(3n1+3n0+x), x即为仅出现一次的元素的第i位,除3取余即为x主要操作为位运算(num >> i)&1 &为按位做与运算,&1即取最后一位位运算符: << ,

2022-02-28 15:52:43 157

原创 Offer II 003. 前 n 个数字二进制中 1 的个数

题目描述给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组0 <= n <= 10^5解:从0到n之间每个数字二进制中1的个数的规律:func(a) = func(a-2^i)+1 每个数可由前面已得的对应位置的数+12 ^i <= a < 2 ^(i+1)时间复杂度O(n) 空间复杂度O(n)class Solution {public: vector<int> countBits(int

2022-02-28 12:10:59 82

空空如也

空空如也

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

TA关注的人

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