剑指offer
星尘魔女梅露露
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 24. 反转链表
剑指 Offer 24. 反转链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { L原创 2021-09-10 17:10:09 · 94 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */1.快慢指针class Solution {public: ListNode* getKthFromEnd(ListNode* hea原创 2021-09-10 17:06:13 · 62 阅读 · 0 评论 -
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面1.辅助数组class Solution {public: vector<int> exchange(vector<int>& nums) { vector<int> odd; //保存奇数 vector<int> even; //保存偶数 for (int i = 0; i < nums.size(); ++i) {原创 2021-09-10 17:02:15 · 66 阅读 · 0 评论 -
剑指 Offer 18. 删除链表的节点
剑指 Offer 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-09-10 16:18:16 · 68 阅读 · 0 评论 -
剑指 Offer 17. 打印从1到最大的n位数
剑指 Offer 17. 打印从1到最大的n位数class Solution {public: vector<int> printNumbers(int n) { int range = 1; while (n--) range *= 10; vector<int> res(range - 1); for (int i = 0; i < res.size(); ++i)原创 2021-09-10 15:13:08 · 64 阅读 · 0 评论 -
剑指 Offer 14- II. 剪绳子 II
剑指 Offer 14- II. 剪绳子 II1.贪心class Solution {public: int cuttingRope(int n) { assert(2 <= n && n <= 1000); if (n <= 3) return n - 1; long res = 1; while (n > 4) { n -= 3; res原创 2021-09-10 15:09:52 · 58 阅读 · 0 评论 -
剑指 Offer 14- I. 剪绳子
剑指 Offer 14- I. 剪绳子1.动态规划class Solution {public: int cuttingRope(int n) { vector<int> dp(n + 1); dp[2] = 1; for (int i = 3; i <= n; ++i) for (int j = 1; j < i; ++j) dp[i] = max(dp[i],原创 2021-09-10 15:03:00 · 129 阅读 · 0 评论 -
剑指 Offer 13. 机器人的运动范围
剑指 Offer 13. 机器人的运动范围1.深搜class Solution {private: int count = 0;public: int movingCount(int m, int n, int k) { vector<vector<bool>> visited(m, vector<bool>(n, false)); dfs(m, n, k, 0, 0, visited); retu原创 2021-09-10 14:50:33 · 73 阅读 · 0 评论 -
剑指 Offer 15. 二进制中1的个数
剑指 Offer 15. 二进制中1的个数1.循环32次class Solution {public: int hammingWeight(uint32_t n) { int count = 0; for (int i = 0; i <= 31; ++i) { if ((n >> i) & 1) ++count; } return原创 2021-09-07 09:01:23 · 76 阅读 · 0 评论 -
剑指 Offer 12. 矩阵中的路径
剑指 Offer 12. 矩阵中的路径class Solution {private: int row, col;public: bool exist(vector<vector<char>>& board, string word) { row = board.size(); col = board[0].size(); for (int i = 0; i < board.size(); ++i)原创 2021-09-07 08:54:29 · 68 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
剑指 Offer 11. 旋转数组的最小数字class Solution {public: int minArray(vector<int>& numbers) { int l = 0, r = numbers.size() - 1; while (l < r) { int mid = (r - l) / 2 + l; if (numbers[mid] > numbers[r])原创 2021-09-07 08:34:57 · 70 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
剑指 Offer 07. 重建二叉树/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode* bu原创 2021-09-07 00:26:10 · 70 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: vector<int> reversePrint(ListNode* head)原创 2021-09-07 00:04:40 · 69 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格class Solution {public: string replaceSpace(string s) { int space_nums = 0; for (int e : s) if (e == ' ') ++space_nums; int old_size = s.size(); s.resize(s.size() + space_原创 2021-09-07 00:01:46 · 61 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { if (matrix.size() == 0 || matrix[0].size() == 0) return false; int r = 0, c = matrix[0].siz原创 2021-09-07 00:01:33 · 67 阅读 · 0 评论 -
剑指 Offer 24. 反转链表
剑指 Offer 24. 反转链表/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { L原创 2021-09-06 23:38:05 · 58 阅读 · 0 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
剑指 Offer 10- II. 青蛙跳台阶问题class Solution {public: int numWays(int n) { if (n == 0) return 1; if (n <= 2) return n; int dp[2] = {1, 2}; int tmp; for (int i = 3; i <= n; ++i) { tmp = dp[原创 2021-09-06 23:34:06 · 63 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字1.哈希计数class Solution {public: int findRepeatNumber(vector<int>& nums) { unordered_set<int> uset; for (int i = 0; i < nums.size(); ++i) { if (uset.find(nums[i]) == uset.end())原创 2021-09-06 23:27:17 · 111 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
剑指 Offer 09. 用两个栈实现队列class CQueue { stack<int> st_in, st_out;public: CQueue() { while (!st_in.empty()) st_in.pop(); while (!st_out.empty()) st_out.pop(); } void appendTail(int value) {原创 2021-09-06 23:15:11 · 66 阅读 · 0 评论 -
剑指 Offer 10- I. 斐波那契数列
剑指Offer 10- Iclass Solution {public: int fib(int n) { if (n == 0) return 0; if (n == 1) return 1; if (n == 2) return 1; int dp[2] = {1, 1}; int tmp; for (int i = 3; i <= n; ++i) { tmp =原创 2021-09-06 21:45:21 · 63 阅读 · 0 评论 -
剑指 Offer16.数值的整数次方
剑指offer16.数值的整数次方1.暴力法class Solution {public: double myPow(double x, int n) { double res = 1; if (n < 0) { x = 1 / x; n = -n; } for (int i = 0; i < n; ++i) res *= x; return res; }};2.二分法class Solution {public: double原创 2021-09-06 21:08:54 · 83 阅读 · 0 评论