目录
写在前面:
题目1:剑指 Offer 03. 数组中重复的数字 - 力扣(Leetcode)
题目的接口:
解题思路:
代码:
过啦!!!
题目2:剑指 Offer 06. 从尾到头打印链表 - 力扣(Leetcode)
题目的接口:
解题思路:
代码:
过啦!!!
写在最后:
写在前面:
今天LeetCode 的每日一题质量一般(才不是我看都看不懂),
所以只好去刷一刷质量有保障的剑指 Offer 了。
题目1:剑指 Offer 03. 数组中重复的数字 - 力扣(Leetcode)
题目的接口:
class Solution {
public:
int findRepeatNumber(vector<int>& nums) {
}
};
解题思路:
其实我第一个想到的是暴力的O(N平方)的解法,
但是想来也不会那么简单让我过,
所以就放弃这个解法了。
思路:
用哈希表记录出现的数字,然后当他再次出现的时候返回即可。
代码:
class Solution {
public:
int findRepeatNumber(vector<int>& nums) {
//建一个哈希表
unordered_map<int, int> map;
//遍历数组
for(int ret : nums)
{
//如果该数字再次出现就返回
if(map[ret] == 1)
{
return ret;
}
//记录出现过的数字
map[ret] = 1;
}
//因为数组中一定有重复数字,随便返回一个值过检查
return 1;
}
};
过啦!!!
题目2:剑指 Offer 06. 从尾到头打印链表 - 力扣(Leetcode)
题目的接口:
/**
* 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) {
}
};
解题思路:
遍历链表,然后放进一个栈里,
再把栈里的元素放进一个数组里,就完成逆序了。
最后返回那个数组即可。
代码:
/**
* 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) {
//建一个栈
stack<ListNode*> st;
//遍历链表并放进栈里
while(head != nullptr)
{
st.push(head);
head = head->next;
}
vector<int> v;
//把栈的值取出,放进vector
while(!st.empty())
{
v.push_back(st.top()->val);
st.pop();
}
return v;
}
};
过啦!!!
写在最后:
以上就是本篇文章的内容了,感谢你的阅读。
如果喜欢本文的话,欢迎点赞和评论,写下你的见解。
如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。
之后我还会输出更多高质量内容,欢迎收看。