牛客算法题

news/2025/2/8 14:34:21
  • 字节题库

NC78 反转链表

NC78 反转链表

  • 迭代法
class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        p=pHead
        pre=None
        while p:
            aft=p.next
            p.next=pre
            pre=p
            p=aft
        return pre
  • 递归法
class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        if not pHead or not pHead.next:
            return pHead
        last=self.ReverseList(pHead.next)
        pHead.next.next=pHead
        pHead.next=None
        return last

NC140 排序

NC140 排序

  • 快速排序
def quick_sort(nums, left, right):
    l,r=left,right
    if l>=r:
        return 
    pivot=nums[l]
    while l<r:
        while l<r and nums[r]>pivot: # pivot写错
            r-=1
        if l<r:
            nums[l]=nums[r]
            l+=1
        while l<r and nums[l]<pivot:
            l+=1
        if l<r:
            nums[r]=nums[l]
            r-=1
    nums[l]=pivot
#     print(nums, l)
    quick_sort(nums, left, l-1)
    quick_sort(nums, l+1, right)
        

class Solution:
    def MySort(self , arr ):
        n=len(arr)
        quick_sort(arr,0,n-1)
        return arr

↑Python代码居然超时。。我去隔壁LC是可以的。。CPP实现↓

class Solution {
public:
    void quick_sort(vector<int>& arr,int left,int right){
        int l=left, r=right;
        if(l>=r) return;
        int pivot=arr[l];
        while(l<r){
            while(l<r && arr[r]>pivot) r--;
            if(l<r){
                arr[l]=arr[r];
                l++;
            }
            while(l<r && arr[l]<pivot) l++;
            if(l<r){
                arr[r]=arr[l];
                r--;
            }
            arr[l]=pivot;
        }
        quick_sort(arr,left,l-1);
        quick_sort(arr,l+1,right);
    }
    
    vector<int> MySort(vector<int>& arr) {
        int n=arr.size();
        quick_sort(arr, 0, n-1);
        return arr;
    }
};

http://www.niftyadmin.cn/n/1493271.html

相关文章

中台之上(六):如何为一个商业银行设计业务架构?

从实际操作的角度讲&#xff0c;企业级业务架构设计及其建模过程是一个充满可能性和争议的过程&#xff0c;并没有一个直观的量化标准能够用于判断一个架构方案的好坏&#xff0c;我们可以通过一个虚拟的例子体会一下。 假定我们为A商业银行设计企业级业务架构&#xff0c;为了…

树模型问题汇总

文章目录决策树集成学习AdaBoostGBDTXgboostXgboost在优缺点Xgboost损失函数推导与求解Xgboost计算过程gblinearXgboost结点分裂的近似策略Xgboost在工程实现上有哪些特点1.块结构设计2.缓存访问优化算法3.“核外”块计算Xgboost是怎么做到并行化的&#xff1f;LightGBMGOSS 单…

2、Dubbo-核心概念

dubbo核心概念 2.1&#xff09;、简介 Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架&#xff0c; 它提供了三大核心能力&#xff1a;面向接口的远程方法调用&#xff0c;智能容错和负载均衡&#xff0c;以及服务自动注册和发现。 官网&…

常见的时间复杂度

文章目录O(log⁡N)\mathcal{O}(\log N)O(logN)有序数据相对有序数据每次操作排除一半可能性二叉搜索树判断二叉树是否合法BST的查找BST的插入BST的删除可以转为为二分查找的问题O(log⁡N⋅log⁡N)\mathcal{O}(\log N \cdot \log N)O(logN⋅logN)O(N)\mathcal{O}(N)O(N)O(Nlog⁡…

X86逆向教程11:F12暂停法的妙用

本节课将介绍F12暂停法的使用技巧&#xff0c;F12暂停法的原理其实很简单&#xff0c;当我们点击OD中的暂停按钮时&#xff0c;OD会将当前的堆栈状态保存起来&#xff0c;并暂停当前窗体的线程执行&#xff0c;直到我们点击运行按钮OD才会唤醒全部线程并继续执行程序&#xff0…

第 6 章 存储 - 042 - 用 volume container 共享数据

volume container volume container 是专门为其他容器提供 volume 的容器。它提供的卷可以是 bind mount&#xff0c;也可以是 docker managed volume。 创建 volume container&#xff1a; 容器名为 vc_data&#xff08;vc 是 volume container 的缩写&#xff09;。volume co…

JavaScript的apply和call方法及其区别

参考资料&#xff1a; http://blog.csdn.net/myhahaxiao/article/details/6952321 apply和call能“劫持”其他对象的方法来执行&#xff0c;其形参如下&#xff1a; apply(obj, array parameters) call(obj, parameter1,parameter2,...) 示例&#xff1a; /*定义一个人类*/ f…

机器学习采样方法 / 机器学习中的熵

Alias Method:时间复杂度O(1)的离散采样方法 【数学】均匀分布生成其他分布的方法 采样方法(Sampling Method) 浅谈KL散度 【机器学习】信息量&#xff0c;信息熵&#xff0c;交叉熵&#xff0c;KL散度和互信息&#xff08;信息增益&#xff09; 交叉熵、相对熵&#xff08…