随笔分类 -  剑指 Offer

摘要:题目描述 解法 思路:使用队列实现广度优先遍历(层序遍历)。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode 阅读全文
posted @ 2023-03-13 21:30 盏茶 阅读(28) 评论(0) 推荐(0)
摘要:题目描述 解法 二分查找 思路: 设i为左界,j为右界,中点为mid; 将number[mid] 与number[j]进行比较,会出现一下情况: number[mid] < number[j]时,说明number[mid] 是最小值右侧元素,令j = mid; number[mid] > numbe 阅读全文
posted @ 2023-03-13 21:11 盏茶 阅读(60) 评论(0) 推荐(0)
摘要:题目描述 解法 双指针 class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> res; int l = 0, r = nums.size() - 1; while(l < r) 阅读全文
posted @ 2023-03-09 19:50 盏茶 阅读(39) 评论(0) 推荐(0)
摘要:题目描述 解法一 双指针法 class Solution { public: vector<int> exchange(vector<int>& nums) { int len = nums.size(); vector<int> res(len); int left = 0, right = le 阅读全文
posted @ 2023-03-09 19:04 盏茶 阅读(38) 评论(0) 推荐(0)
摘要:题目表述 解法 双指针法 class Solution { public: ListNode* deleteNode(ListNode* head, int val) { ListNode *a = head->next; ListNode *b = head; if(head->val == va 阅读全文
posted @ 2023-03-08 21:47 盏茶 阅读(47) 评论(0) 推荐(0)
摘要:题目描述 解法一 双指针 思路:如果两个指针不相等,一个指针遍历完链表后跳到另外一个链表的头指针,两个指针走的路程相等。 class Solution { public: ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) 阅读全文
posted @ 2023-03-06 20:17 盏茶 阅读(52) 评论(0) 推荐(0)
摘要:题目描述 解法一 迭代 思路:当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。 class Solution { public: ListNode* mergeTwoList 阅读全文
posted @ 2023-03-06 19:23 盏茶 阅读(42) 评论(0) 推荐(0)
摘要:题目描述 解法一 顺序查找 思路:链表长度为n,则链表倒数第k个节点是第n-k个节点 class Solution { public: ListNode* getKthFromEnd(ListNode* head, int k) { int n = 0; ListNode *temp = head; 阅读全文
posted @ 2023-03-06 18:30 盏茶 阅读(44) 评论(0) 推荐(0)
摘要:题目描述 解法一 哈希表法 思路:首先遍历一遍s,在哈希表里统计字符数量是否大于1;再遍历一遍s,在哈希表中找到首个数量为1的字符 class Solution { public: char firstUniqChar(string s) { unordered_map<char, bool> di 阅读全文
posted @ 2023-03-05 21:46 盏茶 阅读(40) 评论(0) 推荐(0)
摘要:题目描述 解法一 直接遍历,比较数组下标和该下表对应的值 1.如果nums[i] != i,则i是缺失值 2.如果nums[i] = i,则缺失值是n-1 class Solution { public: int missingNumber(vector<int>& nums) { int n = 阅读全文
posted @ 2023-03-03 20:52 盏茶 阅读(58) 评论(0) 推荐(0)
摘要:题目描述 解法一 思路:遍历数组查找是否有相同数字,相同则count++ class Solution { public: int search(vector<int>& nums, int target) { int count = 0; for(int i = 0; i < nums.size( 阅读全文
posted @ 2023-02-28 21:54 盏茶 阅读(40) 评论(0) 推荐(0)
摘要:题目描述 解法一 基本思路:直接移动 class Solution { public: string reverseLeftWords(string s, int n) { for(int i = 0; i < n; i++){ int j = 0; int temp = s[0]; for(; j 阅读全文
posted @ 2023-02-28 13:00 盏茶 阅读(46) 评论(0) 推荐(0)