LeetCode Algorithms #24 <Swap Nodes in Pairs>

Given a linked list, swap every two adjacent nodes and return its head.

For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.

Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

Subscribe to see which companies asked this question

思路:

发现转换第n个和第n+1个的位置需要先得到转换第n+2与第n+3的结果,所以想到使用递归。

解:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* swapPairs(ListNode* head) {
        if(head == nullptr || head->next == nullptr)
            return head;
        
        ListNode* stepNode = head->next;
        head->next = swapPairs(head->next->next);
        stepNode->next = head;
        
        return stepNode;
    }
};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于vector<pair<int,int>>类型的排序,你可以使用STL库中的sort函数来实现。sort函数可以接受一个自定义比较函数作为参数,以便根据你的需求进行排序。下面是一个示例代码: ```cpp #include <vector> #include <algorithm> bool compare(const std::pair<int, int>& a, const std::pair<int, int>& b) { // 根据第一个元素进行升序排序,如果第一个元素相等,则根据第二个元素进行升序排序 if (a.first == b.first) { return a.second < b.second; } return a.first < b.first; } int main() { std::vector<std::pair<int, int>> vec = {{1, 2}, {2, 1}, {1, 1}, {2, 2}}; // 调用sort函数并传入自定义的比较函数 std::sort(vec.begin(), vec.end(), compare); // 输出排序后的结果 for (const auto& pair : vec) { std::cout << pair.first << " " << pair.second << std::endl; } return 0; } ``` 在上面的示例代码中,我们定义了一个compare函数,用于自定义排序规则。在这个示例中,我们根据第一个元素进行升序排序,如果第一个元素相等,则根据第二个元素进行升序排序。然后,我们调用sort函数,并传入compare函数作为参数,对vector<pair<int,int>>进行排序。最后,输出排序后的结果。 请注意,这只是一个示例,你可以根据自己的需求来定义不同的比较函数来进行排序。<span class="em">1</span> #### 引用[.reference_title] - *1* [leetcode2sumc-LeetCode_Solutions:剑指offer、Leetcode题解c++版本](https://download.csdn.net/download/weixin_38680475/20046128)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值