14. 日常算法

1. 面试题 02.04. 分割链表

题目来源

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。

你不需要 保留 每个分区中各节点的初始相对位置。

c 复制代码
class Solution {
public:
    ListNode* partition(ListNode* head, int x) {
        ListNode* left = head;
        ListNode* right = head;
        while (right){
            if (right->val < x){
                std::swap(left->val, right->val);
                left = left->next;
            }
            right = right->next;
        }
        return head;
    }
};

2. LCR 170. 交易逆序对的总数

题目来源

在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」。请设计一个程序,输入一段时间内的股票交易记录 record,返回其中存在的「交易逆序对」总数。

示例 1:

输入:record = 9, 7, 5, 4, 6

输出:8

解释:交易中的逆序对为 (9, 7), (9, 5), (9, 4), (9, 6), (7, 5), (7, 4), (7, 6), (5, 4)。

c 复制代码
class Solution {
public:
    void MergeSort(vector<int>& record, int left, int right, vector<int>& temp, int& ret){
        if (left >= right) return;
        int mid = left + (right - left) / 2;
        MergeSort(record, left, mid, temp, ret);
        MergeSort(record, mid + 1, right,  temp, ret);
        int k = left, l = left, r = mid + 1;
        while (l <= mid && r <= right){
            if (record[l] > record[r]){
                ret += mid - l + 1;
                temp[k++] = record[r++];
            }else{
                temp[k++] = record[l++];
            }
        }
        while (l <= mid) temp[k++] = record[l++];
        while (r <= right) temp[k++] = record[r++];

        for (int i = left; i <= right; i++){
            record[i] = temp[i];
        }

    }
    int reversePairs(vector<int>& record) {
        vector<int> temp;
        int ret = 0;
        int n = record.size();
        temp.resize(n);
        MergeSort(record, 0, n - 1, temp, ret);
        return ret;
    }
};
相关推荐
find1star2 小时前
LeetCode 141:环形链表
java·算法·leetcode·链表
迅翼SwiftWing2 小时前
编队系列(总)|固定翼编队如何实现稳定飞行?通信架构、协同算法与工程约束深度解析
算法·架构
LB21122 小时前
力扣160 21 86
算法·leetcode·职场和发展
小智老师PMP3 小时前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
HugoStudio_SWAN3 小时前
洛谷 B4450 / B3867 / B3923 智慧购物、储蓄与做题——从程序到生活
c++·学习·程序人生·算法·生活
a187927218313 小时前
【算法】动态规划第二篇:双序列 DP 三课——继承、计步与断链
算法·leetcode·动态规划·dp·回溯·暴力·算法讲解
江畔柳前堤4 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
文心快码BaiduComate5 小时前
2026 OPC x AI Coding 趋势案例交流会圆满落幕:一个人就一支研发团队
算法
ACM-moran5 小时前
条件显化(二分单峰函数+构造数列)
算法·推公式·整数三分
闻缺陷则喜何志丹5 小时前
【栈 运算系统】P3719 [AHOI2017初中组] rexp|普及+
c++·算法··洛谷·运算系统