[Lc]面试题24反转链表 2020-05-15 剑指offer 题目 链表定义: //Definition for singly-linked list. struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; 题解 1. 迭代法(双指针) 实际上是三个指针,一个指向当前节点之前pre,一个指向当前节点cur Read more...
[Lc]面试题22链表中倒数第k个节点 2020-05-14 剑指offer 题目 题解 快慢指针 时间复杂度$O(n)$ 空间复杂度$O(1)$ class Solution { public: ListNode* getKthFromEnd(ListNode* head, int k) { if(k==0 || !head) return nullptr; ListNode *fast = head, *slow = head; int n = 0; while(fast){ if(n >= k) slow = slow->next; fast = fast->next; n++; } if(n<k) return Read more...
[Lc]面试题21调整数组顺序使奇数位于偶数前面 2020-05-14 剑指offer 题目 题解 双指针,左找到偶数,右找到奇数,然后交换,继续循环 时间复杂度$O(n)$ 空间复杂度$O(1)$,原地交换 class Solution { public: vector<int> exchange(vector<int>& nums) { int p1=0, p2 = nums.size()-1; while(p1<p2){ Read more...
[Lc]面试题19正则表达式匹配 2020-05-14 剑指offer 题目 题解 1. 普通递归 class Solution { public: bool isMatch(string s, string p) { if(p.empty()) return s.empty();//若p为空,则s为空返回false。否则返回true //若s不为空且当前字符 Read more...
[Lc]10正则表达式匹配 2020-05-14 leetcode 题目 题解 1. 普通递归 class Solution { public: bool isMatch(string s, string p) { if(p.empty()) return s.empty();//若p为空,则s为空返回false。否则返回true //若s不为空且当前字符 Read more...
[Lc]面试题18删除链表的节点 2020-05-13 剑指offer 题目 链表定义: //Definition for singly-linked list. struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; 题解 这题简单,两个指针,一个指向cur,一个是cur之前pre。当cur的值为val时,p Read more...
[Lc]面试题17打印从1到最大的n位数 2020-05-13 剑指offer 题目 题解 这道题如果不考虑大数的话很简单,但是原书主要是解决输出大数的问题,因此大数也要加以练习(leetcode不考虑大树也能通过) 1. 普通解 Read more...
[Lc]面试题16数值的整数次方 2020-05-13 剑指offer 题目 题解 这道题在leetcode上用挨个累乘的方法会超时因此需要用快速幂法 快速幂是指x**2n == x**n + x**n,利用这一性质,不断的一半的数进 Read more...
[Lc]191位1的个数 2020-05-13 leetcode 题目 题解 1. 位掩码 设置一个位掩码mask,初值为1,每次1向左移动一位,mask与n做与运算之后只有mask中为1的那一位为保留,其余归0。因 Read more...
[Lc]面试题15二进制中1的个数 2020-05-13 剑指offer 题目 题解 1. 位掩码 设置一个位掩码mask,初值为1,每次1向左移动一位,mask与n做与运算之后只有mask中为1的那一位为保留,其余归0。因 Read more...