【LeetCode】剑指 Offer(8)
目录
题目:剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 - 力扣(Leetcode)
题目的接口:
解题思路:
代码:
过啦!!!
题目:剑指 Offer 24. 反转链表 - 力扣(Leetcode)
题目的接口:
解题思路:
代码:
过啦!!!
写在最后:
题目:剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 - 力扣(Leetcode)
题目的接口:
class Solution {
public:vector<int> exchange(vector<int>& nums) {}
};
解题思路:
方法1:
我的思路比较暴力,也是最容易想到的思路:
建一个vector,
第一次遍历数组,把奇数插入进去,
第二次遍历数组,把偶数插入进去,
然后返回即可。
这种方法最简单。
方法2:
其实我还想到一种方法,原地完成:
只需要遍历一次数组,遇到偶数与数组尾部交换,
然后让尾指针++即可。
不过我用的是第一种方法。
代码:
class Solution {
public:vector<int> exchange(vector<int>& nums) {vector<int> v;//第一次遍历,尾插奇数for(auto e : nums){if(e % 2 == 1){v.push_back(e);}}//第二次遍历,尾插偶数for(auto e : nums){if(e % 2 == 0){v.push_back(e);}}return v;}
};
过啦!!!
题目:剑指 Offer 24. 反转链表 - 力扣(Leetcode)
题目的接口:
/* 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) {}
};
解题思路:
这道题看完后,我有两种思路,
第一种是将链表的数据逆置;
第二种是将链表的指针逆置;
我个人感觉将链表的指针逆置更容易,效率也更高一些,
具体思路就是将原头结点指向空,
双指针遍历链表逆置指针即可。
代码:
/* 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) {//判断链表是否为空if(head == nullptr){return head;}//设置双指针ListNode* cur = head->next;ListNode* prev = head;//将头结点指向空head->next = nullptr;//遍历链表,逆置指针指向while(cur){ListNode*tmp = prev;prev = cur;cur = cur->next;prev->next = tmp;}return prev;}
};
过啦!!!
写在最后:
以上就是本篇文章的内容了,感谢你的阅读。
如果喜欢本文的话,欢迎点赞和评论,写下你的见解。
如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。
之后我还会输出更多高质量内容,欢迎收看。