704.二分查找 ·这是三个数的故事 left,middle,right 题目链接:https://leetcode.cn/problems/binary-search/ 前提:数组有序 小->大 数组无重复数 使用语言:c 寻找目标:target 思考路线:l--m--r m找target 大小决定m 向左or向右 方法一:左闭右闭式[l,r] 时间复杂度O(log(n)); 空间复杂度O(1); classSolution{ public: intsearch(vector<int>&nums,inttarge...
977、有序数组的平方 ·双指针思想 题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/ 前提:按非递减顺序排序的整数数组 (存在重复值) 可能存在负数 思路:负数平方后,数组元素大小会变成两头大中间小。 适合双指针进行比较两头大小 数组从尾巴开始排起比较方便 方法:双指针法 时间复杂度O(n); 空间复杂度O(n); classSolution{ public: vector<int>sortedSquares(vector<int>&nums){ intt=...
203、移除链表元素 ·虚拟头节点 题目链接:https://leetcode.cn/problems/remove-linked-list-elements/ 思路:链表遍历 |c->next!=NULL 删除节点 |c->next=c->next->next; c手动释放内存 代码实现: 时间复杂度O(n); 空间复杂度O(1); / Definitionforsingly-linkedlist. structListNode{ intval; ListNodenext; ListNode():val(0),next(nullp...
24、两两交换链表中的节点 ·模拟节点交换 题目链接:https://leetcode.cn/problems/swap-nodes-in-pairs/ 思路:循环中两两交换 手写模拟一下交换的过程就比较容易了 下图是我写的模拟过程: 代码实现:中规中矩地模拟就完事 时间复杂度O(n) 空间复杂度O(1) / Definitionforsingly-linkedlist. structListNode{ intval; ListNodenext; ListNode():val(0),next(nullptr){} ListNode(intx):val(x),n...
(day5休息调整->day6) day6 主要内容:哈希表 哈希表是根据关键码的值而直接进行访问的数据结构。有数组、set(集合)、map(映射)三种数据结构 哈希表用来快速判断一个元素是否出现在集合里。 242、有效的字母异位词 ·数组哈希表 用数组--就完事 题目链接:https://leetcode.cn/problems/valid-anagram/ 思路:数组哈希表存放26个字母的出现次数 数组下标为[字符串-‘a'] 第一串字符对应的数组值 第二串字符对应的数组值- 若有数组值不为0则不是字母异位词 代码实现:数组哈希表 ...
454、四数相加Ⅱ ·map哈希表 当初不知四数相加的好,做完四数之和发现oh这题真简单 题目链接:https://leetcode.cn/problems/4sum-ii/ 前提:计算四个数组中多少个元组满足条件(值可以重复) 思路:四个数组分别两两相加|时间复杂度O(n^2) 前两个数组相加的值作为map的键 map中查找等于(0-后两个数组相加的值)的键 找到则+该键值(这个值可能大于一) 代码实现:unordered_map哈希表 时间复杂度O(n^2) 空间复杂度O(n) classSolution{ public: intfourSumCount(...
344、反转字符串 ·两两交换 给字符串翻个面doge 题目链接:https://leetcode.cn/problems/reverse-string/submissions/ 思路:首尾交换 代码实现: 时间复杂度O(n) 空间复杂度O(1) classSolution{ public: voidreverseString(vector<char>&s){ for(inti=0;i<s.size()/2;i){ swap(s[i],s[s.size()-i-1]); } } }; 异或运算实现数组交换: classSolution{ pub...