
LeetCode刷题记录
小白一枚,尝试通过刷LeetCode的题来学习一些编程知识。所用语言C++,会记录自己的做题思路及过程。
zhouyinuo1998
这个作者很懒,什么都没留下…
展开
-
876.链表的中间结点
代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(ne原创 2021-11-02 19:37:46 · 116 阅读 · 0 评论 -
557.反转字符串中的单词Ⅲ
代码class Solution {public: string reverseWords(string s) { int begin = 0; int end = 0;//双指针,均从第一个元素开始 for (int i = 0; i <= s.size(); ++i)//从头到尾扫描 { if (s[i] == ' ' || s[i] == '\0')//如果扫描到空格或扫描到整个句子的末原创 2021-11-02 19:11:47 · 126 阅读 · 0 评论 -
344.反转字符串
代码class Solution {public: void reverseString(vector<char>& s) { int begin = 0; int end = s.size()-1; while (begin < end) { char temp = s[end]; s[end] = s[begin];原创 2021-10-31 21:04:56 · 102 阅读 · 0 评论 -
167.两数之和Ⅱ
代码class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { //一般双指针 //for (int i = 0; i < numbers.size(); ++i) // for (int j = i + 1; j < numbers.size(); ++j) // {原创 2021-10-31 19:31:20 · 94 阅读 · 0 评论 -
189.旋转数组
代码class Solution {public: void rotate(vector<int>& nums, int k) { if(nums.size()>0||k>0) { k = k%nums.size();//特殊情况,k>N倍的nums.size() /*int* temp = new int[k];//动态分配内存,用于存放nums中的后k个元素原创 2021-10-31 15:53:31 · 80 阅读 · 0 评论 -
977.有序数组的平方
代码class Solution {public: vector<int> sortedSquares(vector<int>& nums) { //先平方再排序 //平方 for(int i=0;i<nums.size();++i) nums[i]=nums[i]*nums[i];//平方 /*//冒泡排序:升序,双指针 int te原创 2021-10-30 22:06:50 · 162 阅读 · 0 评论 -
278.第一个错误的版本
代码// The API isBadVersion is defined for you.// bool isBadVersion(int version);class Solution {public: int firstBadVersion(int n) { if(n<=0) return -1; int low=1; int high=n; int mid=0; whi原创 2021-10-30 21:35:48 · 87 阅读 · 0 评论 -
35.搜索插入位置
代码class Solution {public: int searchInsert(vector<int>& nums, int target) { if(nums.size()<=0) return -1; int low=0; int high=nums.size()-1; int mid=0; while(low<=high)原创 2021-10-30 21:32:42 · 85 阅读 · 0 评论 -
704.二分查找
704.二分查找代码class Solution {public: int search(vector<int>& nums, int target) { if(nums.size()<=0) return -1; int low=0; int high=nums.size()-1; int mid=0; while(low<=high)原创 2021-10-28 21:37:42 · 76 阅读 · 0 评论 -
1.整数反转 Reverse Integer [7]
题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意本题需要注意转换后的结果是否溢出。借住了头文件limist.h中的定义:#define INT_MAX 2147483647#define INT_MIN (-INT_MAX - 1)代码class Solution{ public: int reverse(int x){ if(x/10==0) return x; int res=0;//用来存放原创 2020-10-03 20:34:42 · 106 阅读 · 0 评论 -
3.最后一个单词的长度 Length of Last Word [58]
题目给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明: 一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。思路用ifLast去记录是否已经读完最后一个单词,如果是就break出来。遇到空格直接continue,直到遇到字母开始记录长度。代码class Solution {public: int lengthOfLastWord(stri原创 2020-10-03 18:44:58 · 86 阅读 · 0 评论 -
2.最长公共前缀 Longest Common Prefix [14](纵向扫描法)
题目编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。思路纵向扫描时,从前往后遍历所有字符串的每一列,比较相同列上的字符是否相同,如果相同则继续对下一列进行比较,如果不相同则当前列不再属于公共前缀,当前列之前的部分为最长公共前缀。代码class Solution{ public: string longestCommonPrefix(vector<string>& strs){ if(strs.size()原创 2020-10-03 17:06:52 · 197 阅读 · 0 评论 -
1.实现 strStr() Implement strStr() [28] (两种算法)
题目给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。1 库函数法原创 2020-10-03 15:35:26 · 78 阅读 · 0 评论 -
3.删除排序数组中的重复项② Remove Duplicates from Sorted Array [80]
题目给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。思路快指针:遍历整个数组。慢指针:记录可以覆写数据的位置。算法class Solution{ public: int removeDuplicayes(vector<int>& nums){ if(nums.size()<=2)原创 2020-09-28 19:28:50 · 84 阅读 · 0 评论 -
2.删除排列数组中的重复项 Remove Duplicates from Sorted Array[26]
题目给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。思路和删除元素[27]较像。使用双指针来删除重复元素。算法class Solution{ public: int removeDuplicayes(vector<int>& nums){ if(nums.size()==0)原创 2020-09-28 16:00:04 · 72 阅读 · 0 评论 -
1.移除元素 Remove Element [27]
题目给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间(空间复杂度)并 原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。提示使用双指针。题目中“元素顺序可以改变”。解决方案**方法:**双指针。**思路:**保留两个指针i和j,其中i是慢指针,j是快指针。算法:class Solution{ public: int r原创 2020-09-28 14:45:56 · 81 阅读 · 0 评论