自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 剑指Offer50 第一个只出现一次的字符

C++哈希表,记录是否键值(字符)出现class Solution {public: char firstUniqChar(string s) { unordered_map<char, bool> map; for(auto i : s){ if(map.find(i)==map.end()) map[i] = false; //第一次出现,false else map[i] = true; .

2022-03-16 22:43:01 6606 1

原创 剑指Offer29 顺时针打印矩阵

C++class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> res; if(matrix.empty()) return {}; //不能返回一个没有初始化的vector数组 int l=0, r=matrix[0].size()-1, t=0, b=..

2022-03-16 21:45:55 787

原创 剑指Offer05 替换空格

C++在 C++ 语言中, string 被设计成「可变」的类型,因此可以在不新建字符串的情况下实现原地修改。class Solution {public: string replaceSpace(string s) { int count = 0, len = s.size(); for(auto i:s) if(i == ' ') count++; //统计空格数量 s.resize(len + .

2022-03-16 21:05:52 1829

原创 剑指Offer03 数组中重复的数字

法一:哈希表(c++ map,python set)键值一一对应,如果键存在重复返回键,没有就插入这个键C++class Solution {public: int findRepeatNumber(vector<int>& nums) { unordered_map<int, bool> map; //unordered_map不排序,速度更快 for(int num : nums) { .

2022-03-16 19:59:58 1365

原创 剑指 Offer 10- II. 青蛙跳台阶问题

C++class Solution {public: int numWays(int n) { int a=1, b=1, sum=2; if(n==0||n==1) return 1; for(int i=1;i<n;i++){ sum=(a+b)%1000000007; //防止超出int型范围 a=b; b=sum; } .

2021-10-27 18:29:21 75

原创 剑指Offer04 二维数组中的查找

C++思路class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { int j = 0, i = matrix.size()-1; while(i>=0&&j<matrix[0].size()){ if(matrix[i][j]>target) i.

2021-10-25 21:21:26 3739

原创 剑指 Offer 10- I. 斐波那契数列

C++递归的方法超时了,这里使用动态规划的思想。不断替换a,b的值,而不是每次递归执行两次函数class Solution {public: int fib(int n) { if (n == 0) return 0; if (n == 1 || n == 2) return 1; int a = 1, b = 1, sum = 0; for (int i = 3; i <= n; i++) { .

2021-10-25 19:58:43 58

原创 剑指Offer09--用两个栈实现队列

C++C++的pop()函数没有返回值,Python列表的pop()函数有返回值class CQueue { stack<int> stack1; stack<int> stack2;public: CQueue() {} void appendTail(int value) { stack1.push(value); } int deleteHead() { if(.

2021-10-20 20:32:07 71

原创 LeetCode第16题--最接近的三数之和

可以不判重,思路统上一道题,比上一道题简单C++class Solution {public: int threeSumClosest(vector<int>& nums, int target) { sort(nums.begin(),nums.end()); int ans = nums[0]+nums[1]+nums[2]; int n = nums.size(); if(nums.size()<.

2021-10-13 20:54:26 49

原创 LeetCode第15题--三数之和

C++使用set集合(有序去重)再用assign函数(vector的函数,将原来的vector清空,赋上新的vector)转回vector,这样做超出时间限制。可能跟set或者assign的底层实现有关在这里插入代码片双指针思想关于去重,要考虑到三个位置,循环的i,左指针l,右指针r都有可能与相邻的重复class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) .

2021-10-09 21:17:29 73

原创 LeetCode第14题--最长公共前缀

C++输出字符串上的索引:string.substr(起始位置索引,子串长度),长度比索引多一因为当判断到不相等的位置时,此时的i是多一的,所以直接等于要输出的子串的长度class Solution {public: string longestCommonPrefix(vector<string>& strs) { if (strs.size()<1) return ""; int len = strs[0].length();.

2021-10-09 20:20:26 58

原创 LeetCode第13题--罗马数字转整数

因为有几种特殊情况是小的数在前,所以在转换的时候要判断一下是否是特殊情况,利用键对应的值来判断大小C++class Solution {public: int romanToInt(string s) { map<char,int> luoma={ {'M',1000}, {'D',500}, {'C',100}, {'L',50}, {'X',.

2021-09-29 21:32:46 51

原创 LeetCode第12题--整数转罗马数字

C++用两个数组表示值和罗马,包括其中的特殊情况一一对应,一共13种注意里面判断要用while循环,因为num减去一个数的时候还会小于上一个判断的数,罗马数字可能会连续重复,比如IIIclass Solution {public: string intToRoman(int num) { int nums[]={1000,900,500,400,100,90,50,40,10,9,5,4,1}; string res[]={"M","CM","D","CD".

2021-09-29 20:51:30 67

原创 LeetCode第11题--盛最多水的容器

C++粗暴的使用两层循环显示超出时间限制,一般双层循环问题都要考虑是不是可以用双指针解决,这里考虑使用从两边向里逼近,哪边低一些哪边就往里走思路class Solution {public: int maxArea(vector<int>& height) { int i = 0,j = height.size()-1,ans = 0; while(i<j){ ans = height[i] < hei.

2021-09-27 21:05:10 64

原创 LeetCode第九题--回文数

C++如果是负数那肯定不是回文数,反转数字一般都是那两行代码class Solution {public: bool isPalindrome(int x) { if (x<0) return false; int xx = x; long ans = 0; while(x){ ans = ans*10 + x%10; x = x/10; } .

2021-09-27 20:57:25 61

原创 LeetCode第八题--字符串转整数

C++字符型数字减去字符‘0’就能得到对应的数字形式class Solution {public: int myAtoi(string s) { unsigned long len = s.length(); int index=0; while(index<len){ if(s[index]!=' ') break; index++; if(index==len) .

2021-09-27 20:53:51 41

原创 LeetCode第七题--整数反转

C++整数数字的反转利用区域和除法实现int范围[−231, 231 − 1] -2147483648~2147483647还是要进行单独的个位检测,还有就是正负数不用分开,一起运算,会带着符号。class Solution {public: int reverse(int x){ if(x == 0) return 0; int result = 0; while(x) { if(result > INT_MAX /10 ||

2021-09-16 21:12:17 64

原创 LeetCode第6题--Z字形变换

Pythonclass Solution: def convert(self, s: str, numRows: int) -> str: if numRows < 2: return s res = ['' for x in range(numRows)]#设置固定长度的数组,都为空 i, flag = 0, -1 for d in s: res[i] += d #到第一

2021-09-16 16:26:23 87

原创 LeetCode第5题--最长回文子串

C++1. 中心扩展算法要始终记住索引要比真实长度少一,所以要表示真实长度要加一R-L-1那里是因为当回文时就r++l–,所以r和l最后指的位置时回文子串的前一和后一的位置,算出的真实长度(R-L+1)要减2class Solution {public: string longestPalindrome(string s) { if (s.length() < 1) { return ""; } int start = 0, end = 0; for

2021-09-15 14:44:32 56

原创 LeetCode第四题--寻找两个正序数组的中位数

C++C++里整数除整数会自动取整,Python3里得到什么就是什么,要取整就得加int函数sort函数在#include 头文件里,升序排序,降序方法#include <algorithm>class Solution {public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { vector<int> num

2021-08-25 10:48:42 53

原创 LeetCode第三题--无重复字符的最长子串

C++unordered_set无序容器:find(key)函数:查找以值为 key 的元素,如果找到,则返回一个指向该元素的正向迭代器;反之,则返回一个指向容器中最后一个元素之后位置的迭代器class Solution {public: int lengthOfLongestSubstring(string s) { if(s.size()<2) return s.size(); unordered_set<char> substr;

2021-08-24 21:40:36 80

原创 LeetCode第二题--两数相加

C++链表通过指针相连起来,只要有头指针指向第一个节点就可以找到整个的链表,然后链表的创建和查找需要定义一个额外的节点指针,用来不断的指向next指针指向的内存空间/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) :

2021-08-23 21:19:59 51

原创 LeetCode第1题--两数之和(C++和Python)

注意返回的是索引,不是值C++vector() 创建一个空的vector数组非空函数要在所有控制路径中都要有返回值题目模板返回的vector数组class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { if(nums.size()<2) return vector<int>(); //创建一个空的vecto

2021-08-12 21:14:33 71

空空如也

空空如也

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

TA关注的人

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