算法面试
本专栏结合Leetcode以及各个大厂算法面试问题给出一些思路
dos diosas
这个作者很懒,什么都没留下…
展开
-
006.二分法求解快速幂 LeetCode:50. Pow(x, n)
本题是一道典型的二分法求解快速幂问题的方法,但是由于Leetcode上的bug,给出的模板是int参数,但是测试用例却具有long long大小的参数,所以这里需要注意,并且要加以修改。class Solution {public: double help(double x,uint64_t n) { if(n==1) { return x; } if(n%2==0) {原创 2020-05-19 23:26:31 · 117 阅读 · 0 评论 -
005.使用虚拟头节点解决链表问题:LeetCode 203. 移除链表元素
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* removeElements(ListNode* head, int val) { ListNode原创 2020-05-19 21:38:24 · 103 阅读 · 0 评论 -
004.使用循环逆转链表 LeetCode206. 反转链表
不利用栈将链表翻转 时间复杂度O(n)/** * 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) {原创 2020-05-19 20:53:38 · 107 阅读 · 0 评论 -
003.构建查找表,降低搜索花费的时间,LeetCode:454. 四数相加 II
class Solution {public: int fourSumCount(vector<int>& A, vector<int>& B, vector<int>& C, vector<int>& D) { unordered_map<int,int>record; for(int i=0;i<C.size();i++) {原创 2020-05-19 00:15:48 · 90 阅读 · 0 评论 -
002.滑动窗口问题,LeetCode:3. 无重复字符的最长子串
class Solution {public: int lengthOfLongestSubstring(string s) { int freq[256]={0};//初始化的时候滑动窗口中没有任何字符,freq记录当前字串中各个字符的出现频率 int l=0,r=-1;//滑动窗口为s[l..r] int res=0;//记录当前找到的满足条件的最长子串的长度是多少 while(l<s.size()) {原创 2020-05-15 20:50:55 · 82 阅读 · 0 评论 -
001.滑动窗口问题,LeetCode:209. 长度最小的子数组
下面的解法通过使用一个滑动窗口将时间复杂度由暴力解法的O(n^3)简化到O(N),注意在循环中i,j的取值以及判定条件的变化。class Solution {public: int minSubArrayLen(int s, vector<int>& nums) { //首先设置索引 int l=0,r=-1;//nums[l,r]为滑动窗口,初始的时候不让滑动窗口包含任何元素 int sum=0; int re原创 2020-05-15 20:29:07 · 122 阅读 · 0 评论