如今不论是校招还是社招,大多数公司都会有笔试+面试的算法题,以此来考察候选人的数据结构和算法能力,因此我们面试前最好复习下算法,简单来说就是刷题呗!
以下是本人社招时在Leetcode和牛客网上的大厂的高频题,大概二三百道,此系列只列出最热门的一百来道,代码都是Leetcode上的,可以正常运行。大家可以根据下面推荐的题目来有选择的刷题,最好是进入Leetcode或牛客来刷,里面有许多优秀解法可以参考!
常见算法有背包、DFS、BFS、动态规划、数组、状态压缩、图优化、数学推导、字符串、链表二叉树、邻接表、图优化等等。
下面是正常的题目,大家可以参考一下:
//牛客网地址:https://www.nowcoder.com/ta/job-code-high
//2021.03.28
1、反转链表
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode* pre = nullptr;
ListNode* cur = pHead;
while(pHead){
ListNode* mid = pHead->next;
pHead->next = pre;
pre = pHead;
pHead = mid;
}
return pre;
}
};
2、排序算法
(1)快排
void quickSort(vector<int>& arr,int low,int high){
int left = low,right = high;
if(left>=right)
return;
int flag = arr[low]; //哨兵
while(left!=right){
while(arr[right]>=flag && left<right)
right--;
while(arr[left]<=flag && left<right)
left++;
if(left<right)
swap(arr[left],arr[right]);
}
swap(arr[low],arr[right]);
quickSort(arr,low,right-1);
quickSort(arr,right+1,high);
return;
};
int main(){
// write code here
vector<int> arr = { 5, 2, 3, 1, 4 };
int len = arr.size();
quickSort(arr, 0, len - 1);
for (int i = 0; i < len; i++)
cout << arr[i] << " ";
return 0;
}
//2021.03.29
3、实现LRU算法
哈希表+双向链表
class LRUCache {
public:
LRUCache(int capacity) {
size = capacity;
}
int get(int key) {
auto it = ans.find(key);
if(it == ans.end())
return -1;
res.splice(res.begin(),res,it->second); // let it->second in begin
return it->second->second;
}
void put(int key, int value) {
auto it = ans.find(key);
最后
以上就是顺利寒风最近收集整理的关于Leetcode面试热题(一)的全部内容,更多相关Leetcode面试热题(一)内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复