自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 【leetcode】 1 两数之和

思路:1. 暴力法 O(n2)2. 哈希表,转换为找target - nums[i]的问题,查找用哈希表class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> res; unordered_map<int, int> hash; for (int i = 0;

2020-09-03 22:03:18 66

原创 【leetcode】 21 合并两个有序链表

解法一:迭代法 / 暴力法思路先解释一下迭代,迭代就是不断的对某一过程进行重复,通过重复,逼近所需的目标或结果。本题要求将两个升序链表合并成一个新的升序链表,题目中强调:新链表是通过拼接给定的两个链表的所有节点组成的。 这个意思是新链表不开辟新的额外空间,仅在原来的两个链表的基础上进行拼接得到。暴力的想法是,用三个指针,l1、l2分别指向两个升序链表的表头,prev指向当前新生成链表中的尾节点。对两个链表l1、l2从最头上的节点开始两两比较,哪个小就让prev的next指向谁,接着将prev

2021-01-28 15:45:10 265

原创 【leetcode】 25 K个一组翻转链表

解法一:思路题目要求将一个链表按K个一组进行翻转,不够K个保留原样,返回翻转后的新链表。可将链表分为三部分:已经翻转过的节点、待翻转的k个节点以及未翻转的节点,指针start指向待翻转部分的头节点,指针end指向待翻转部分的尾节点;指针pre指向待翻转部分的前驱结点,指针next指向待翻转部分的后继节点。记录pre和next是为了处理完待翻转的k个节点后能连接回原链表:每次只需要找到待翻转的k个节点,对这k个节点进行翻转处理: 如果链表剩余节点数不够k个,则结束翻转并返回整个新..

2021-01-27 11:55:20 145

原创 【leetcode】 142 环形链表II

解法一:双指针法思路 题目要求返回链表开始入环的第一个节点,无环则返回NULL。 首先判断链表有没有环,采用快慢指针法。fast和slow指针都从head出发(注意:在单纯判断链表有没有环的问题中,slow从head出发,fast从head->next出发,是为了使用while (fast == slow)而不必用do while循环来判断相遇条件。而本题一定要都从head出发才能进行后续相遇条件的推导),fast每次走2步,slow每次走1步,若有环,fast最终会和slow...

2021-01-21 11:29:41 184

原创 【leetcode】 141 环形链表

解法一:哈希表思路判断链表中有没有环,可以遍历链表中的每个元素,如果之前遍历过的元素再次出现,说明链表中有环,否则没有。具体可以用哈希表来存储已经遍历过的节点。步骤1. 创建哈希表,因为是需要存储链表中的节点,用集合unordered_set即可,存储的数据类型为ListNode*2. 遍历链表,while循环终止条件是节点为NULL3. 将遍历的每个节点放到哈希表,判断当前节点是否在哈希表中找到,若找到,说明有环4. 循环结束后如果没能找到,说明没环。代码/** *

2021-01-08 16:55:23 193 2

原创 【leetcode】 24 两两交换链表中的节点

解法一:递归思路题目给出了单向链表的定义: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(next) {}};将整个单向链表两两交换相邻的节点,可看成重复执行

2021-01-08 11:22:28 90 1

原创 【leetcode】 206 反转链表

解法一:双指针法思路题目给出了单向链表的定义:struct ListNode { int val; ListNode* next; ListNode(int x) : val(x), next(NULL) {}};用两个相邻指针curr和pre,分别指向链表中相邻的节点,pre在前,curr在后。初始时curr为NULL,pre指向链表头head,每次都让pre的next指向curr,再让curr和pre同时向后移动一位,直到pre指向NULL时,curr

2020-10-16 11:08:51 85

原创 【leetcode】 26 删除排序数组中的重复项

解法一:双指针法思路数组是排好序的,这点很关键,说明重复的元素都是相邻的。题目说 “你不需要考虑数组中超出新长度后面的元素。”, 那么只需要将不重复的所有元素都往前挪即可,且返回不重复的元素个数。步骤1. 特殊情况处理:若nums.size() == 0,return 0;2. 初始化双指针,p、q分别指向第一、二个元素;3. 开一个循环,只要q < nums.size(), 当p指向元素和q指向元素值不同时,将q指向的元素挪到p+1的位置(为了避免将q指向的元素原地..

2020-10-12 21:45:36 54

原创 【leetcode】 66 加一

解法一:思路十进制加法器。一般情况下只需要最后一位加1就能得到结果;如果最后一位是9,加1是10,发生进位;还有可能一路进位,每位都是9;最特殊的情况是进位到首位,需要在首位新增一位1。步骤1. 开一个循环,从数组末尾的下标元素开始依次往前,直到下标自减到0;2. 不论是否发生进位,当前下标的元素都只会自加1;3. 判断自加后的值是否是10,不是10,直接return数组,是10,将当前位元素置为0,且继续下一轮循环,将前一位重复2、3步骤,直到当前位值不为10就return出去;

2020-10-12 21:17:16 68

原创 【leetcode】 88 合并两个有序数组

思路理解题意:nums1的长度为m+n,其中m个元素是排好序的,另外n个只开辟了空间,用来存放nums2过来的n个元素:nums2的长度为n,所以nums2中存放n个排好序的元素:从题目给的示例来看,顺序是按从小到到排的。思路是,从nums1的最右边开始向左一个个填数,直到把nums2中所有n个元素全部填到nums1中为止。具体是将nums2中最后的元素和nums1前m个元素中最后的元素进行比较,谁大谁就和nums1最后的元素交换。步骤1. 获取nums1最大的下标 i.

2020-10-12 18:23:26 127 2

原创 【leetcode】189 旋转数组

解法一: 一步步挪步骤1. 当k是0或数组长度整数倍时,旋转之后的数组就是原数组,所以只需要考虑k%nums.size()不为0的情况,将余数取出来赋给k,这个k才是真正需要旋转的数值。2. 第一步中取得的余数不为0时才需要做旋转,否则不用。3. 根据k的值,一步步挪: 1)k只要不为0,每次挪动1位后k自减1,直到k减到0为止。 2)挪动1位的做法是:将每一个数都往后挪一位,将最后的数挪到首位。代码class Solution {public: ...

2020-10-12 12:26:48 153 1

原创 【leetcode】 15 三数之和

解法一:暴力法(O(n3))a+b+c = 0 转换成 a+b = -c,即三数之和转成两数之和。-c遍历数组得到。为了满足题目要求:“答案中不可以包含重复的三元组。”,为方便去重,先将数组排序,再暴力即可:class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> res;

2020-09-17 17:01:16 87

原创 【leetcode】 70 爬楼梯

解法一 一个循环n的情况 怎么走 方法数 1 1 1 2 1+1 或 2 2 3 1+1+1 或 1+2 或 2+1 3 n n f(n-1) + f(n-2) 不可人肉列举,第n阶台阶只能从第n-1阶或n-2阶上来,所以f(n) = f(n-1) + f(n-2)。递归(从终点开始往前求),时间复杂度高。正向计算即可:class Solution {public: int climbStairs(..

2020-09-03 21:24:22 54

原创 【leetcode】 283 移动零

class Solution {public: void moveZeroes(vector<int>& nums) { if(0 == nums.size()) return; int j = 0; for(int i = 0; i < nums.size(); i++) { if(0 != nums[i]) { nums[j] = nums[i]; .

2020-09-02 22:02:10 50

原创 【Leetcode】 11 盛最多水的容器

class Solution {public: int maxArea(vector<int>& height) { int maxArea = 0; int left = 0; int right = height.size() - 1; while(left < right) { maxArea = max(maxArea, min(height[left], height[r.

2020-09-02 21:19:03 65

原创 Visual Studio 2017 下 libuv 环境搭建

1. 从github上下载libuv库: https://github.com/libuv/libuv 我解压后直接放在C盘下,在C:\libuv\libuv-1.x下创建build目录2.从github上下载gyp库: https://github.com/turbulenz/gyp 解压后拷贝到C:\libuv\libuv-1.x\build3...

2019-09-23 17:18:08 606 1

转载 va_list原理及用法

VA_LIST 是在C语言中解决变参问题的一组宏,变参问题是指参数的个数不定,可以是传入一个参数也可以是多个;可变参数中的每个参数的类型可以不同,也可以相同;可变参数的每个参数并没有实际的名称与之相对应,用起来是很灵活。下面是va_list的用法示例:#include int AveInt(int,...);void main(){ printf(

2017-08-12 10:43:18 555

转载 【c++】ofstream和ifstream

关于c++的<fstream>库中ofstream和ifstream详解。

2017-08-10 19:43:35 238

secureCRT6.6

secureCRT6.6破解版,64位操作系统,支持SSH1和SSH2的终端仿真程序,这个程序能够在windows系统中登陆UNIX或Linux的服务器主机,并且还能进行管理设置。

2019-01-16

空空如也

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

TA关注的人

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