剑指 Offer
蒟蒻颖
一个热爱开发的数学蒟蒻
展开
-
剑指 Offer 11. 旋转数组的最小数字
题目链接 11. 旋转数组的最小数字 思路分析 利用二分查找即可。 class Solution { public: int minArray(vector<int>& numbers) { std::ios::sync_with_stdio(false); int l = 0, r = numbers.size() - 1; while(r > 0 && numbers[r] == numbers[0])原创 2021-03-30 20:14:59 · 170 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
题目链接 03. 数组中重复的数字 思路分析 运用占位,如果i!=nums[i]则说明在该坑位的数与该下标不相等,如果nums[i]==nums[nums[i]]则说明两个值重复 class Solution { public: int findRepeatNumber(vector<int>& nums) { std::ios::sync_with_stdio(false); int n = nums.size(); for(原创 2021-03-21 00:19:35 · 170 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
题目链接 04. 二维数组中的查找 思路分析 利用右上角的数来判断减少判断行数,如果右上角的数大于target那么该列都大于,所以j–,如果小于target那么改行都小于,所以i++。 class Solution { public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { std::ios::sync_with_stdio(false);原创 2021-03-21 15:58:28 · 200 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
题目链接 03. 数组中重复的数字 思路分析 遍历判断即可。 class Solution { public: string replaceSpace(string s) { std::ios::sync_with_stdio(false); string tmp; for(auto a : s){ if(a == ' ') tmp += "%20"; else tmp += a; }原创 2021-03-21 12:58:30 · 176 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
题目链接 06. 从尾到头打印链表 思路分析 遍历一遍列表储存在vector中,然后反转输出。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: vector<int>原创 2021-03-21 16:08:57 · 182 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
题目链接 09. 用两个栈实现队列 思路分析 用两个栈实现队列,首先把1->2然后逐个弹出顶端元素。 class CQueue { public: stack<int> stack1, stack2; CQueue() { } void appendTail(int value) { stack1.push(value); } int deleteHead() { std::ios::原创 2021-03-21 16:52:10 · 177 阅读 · 0 评论 -
剑指 Offer 17. 打印从1到最大的n位数
题目链接 17. 打印从1到最大的n位数 思路分析 直接从1到pow(10, n)即可。 class Solution { public: vector<int> printNumbers(int n) { std::ios::sync_with_stdio(false); vector<int> C; for(int i = 1; i < pow(10, n); i++) C.push_bac原创 2021-03-30 18:12:31 · 169 阅读 · 0 评论 -
剑指 Offer 18. 删除链表的节点
题目链接 18. 删除链表的节点 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* deleteNode(ListNode* head, int val) {原创 2021-03-30 18:39:10 · 172 阅读 · 0 评论 -
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
题目链接 21. 调整数组顺序使奇数位于偶数前面 思路分析 首尾双指针 class Solution { public: vector<int> exchange(vector<int>& nums) { std::ios::sync_with_stdio(false); int i = 0, j = nums.size() - 1; while(i < j){ while(nums[i原创 2021-03-24 22:47:30 · 173 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点
题目链接 22. 链表中倒数第k个节点 思路分析 由于链表不能够前巡结点,所以我们一共遍历两便链表,第一遍记录链表的长度,第二遍我们遍历输入第k个结点 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { pu原创 2021-03-27 08:24:30 · 168 阅读 · 0 评论 -
剑指 Offer 25. 合并两个排序的链表
题目链接 25. 合并两个排序的链表 思路分析 利用归并排序的归并思想 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* mergeTwoLists(ListNo原创 2021-03-25 10:06:18 · 177 阅读 · 0 评论 -
剑指 Offer 50. 第一个只出现一次的字符
题目链接 50. 第一个只出现一次的字符 思路分析 利用利用哈希表储存频数,然后遍历输出等于1的字符 class Solution { public: char firstUniqChar(string s) { std::ios::sync_with_stdio(false); unordered_map<int, int> tmp; for(auto c : s) tmp[c]++; for(auto it : s)原创 2021-03-21 15:14:08 · 180 阅读 · 0 评论 -
剑指 Offer 51. 数组中的逆序对
题目链接 51. 数组中的逆序对 思路分析 运用归并排序的逆序过程求逆序对 class Solution { public: typedef long long LL; LL res = 0; LL mergeSort(vector<int>& nums, vector<int>& tmp, int l, int r){ if(l >= r) return 0; int mid = (l + r) /原创 2021-03-19 11:30:12 · 184 阅读 · 0 评论 -
剑指 Offer 53 - I. 在排序数组中查找数字 I
题目链接 53 - I. 在排序数组中查找数字 I 思路分析 利用二分查找即可。 class Solution { public: int search(vector<int>& nums, int target) { std::ios::sync_with_stdio(false); if(nums.empty()) return 0; int l = 0, r = nums.size() - 1; while原创 2021-03-30 18:52:59 · 168 阅读 · 0 评论 -
剑指 Offer 57. 和为s的两个数字
题目链接 57. 和为s的两个数字 思路分析 利用反向迭代器输出 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { std::ios::sync_with_stdio(false); std::cin.tie(0); unordered_map<int, int> hash; for(i原创 2021-03-24 23:10:13 · 173 阅读 · 0 评论