算法基础十

Python学习之旅:进阶阶段(十)算法基础-选择排序算法 在 Python 编程的进阶过程中,掌握各种算法是提升编程能力的关键。今天我们要学习的是选择排序算法,它是一种简单直观的排序算法,在数据处理中有着独特的应用。接下来,让我们一起深入了解选择排序算法。 阅读详情

加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。

示例 1:
输入:digits = [1,2,3] 输出:[1,2,4] 解释:输入数组表示数字 123。
示例 2:
输入:digits = [4,3,2,1] 输出:[4,3,2,2] 解释:输入数组表示数字 4321。
示例 3:
输入:digits = [0]

解题思路:给定数组代表一个十进制数,数组的0下标是十进制的高位。从数组尾部开始遍历,依次进位。


 public int[] plusOne(int[] digits) {
        for (int i = digits.length - 1; i >= 0; i--) {
            digits[i]++;
            digits[i] = digits[i] % 10;
            if(digits[i] != 0) {
                return digits;
            }
        }

        digits = new int[digits.length + 1];
        digits[0] = 1;
        return digits;
    }

二进制求和

给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

示例 1:
输入:a = “11”, b = “1” 输出:“100”
示例 2:
输入:a = “1010”, b = “1011” 输出:“10101”

    public String addBinary(String a, String b) {
        StringBuffer ans = new StringBuffer();

        int n = Math.max(a.length(), b.length()), carry = 0;
        for (int i = 0; i < n; ++i) {
            carry += i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0;
            carry += i < b.length() ? (b.charAt(b.length() - 1 - i) - '0') : 0;
            ans.append((char) (carry % 2 + '0'));
            carry /= 2;
        }

        if (carry > 0) {
            ans.append('1');
        }
        ans.reverse();

        return ans.toString();
    }

x 的平方根

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。

示例 1:
输入:x = 4 输出:2
示例 2:
输入:x = 8 输出:2


   public int mySqrt(int x) {
        if (x == 0) {
            return 0;
        }
        int ans = (int) Math.exp(0.5 * Math.log(x));
        return (long) (ans + 1) * (ans + 1) <= x ? ans + 1 : ans;
    }

爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:
输入:n = 2 输出:2
示例 2:
输入:n = 3 输出:3

解题思路:动态规划


    public int climbStairs(int n) {
        int p = 0, q = 0, r = 1;
        for (int i = 1; i <= n; ++i) {
            p = q; 
            q = r; 
            r = p + q;
        }
        return r;
    }

颜色分类

给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。必须在不使用库内置的 sort 函数的情况下解决这个问题。

示例 1:
输入:nums = [2,0,2,1,1,0] 输出:[0,0,1,1,2,2]
示例 2:
输入:nums = [2,0,1] 输出:[0,1,2]

解题思路:计数排序

 public void sortColors(int[] nums) {
        int n = nums.length;
        int ptr = 0;
        for (int i = 0; i < n; ++i) {
            if (nums[i] == 0) {
                int temp = nums[i];
                nums[i] = nums[ptr];
                nums[ptr] = temp;
                ++ptr;
            }
        }
        for (int i = ptr; i < n; ++i) {
            if (nums[i] == 1) {
                int temp = nums[i];
                nums[i] = nums[ptr];
                nums[ptr] = temp;
                ++ptr;
            }
        }
    }

【算法底座研究室】机器学习基础算法 (十) - XGBoost XGBoost(Extreme Gradient Boosting)是近年来广泛应用于数据科学和机器学习竞赛中的一种高效且强大的集成学习算法。作为梯度提升树(Gradient Boosting Decision Tree,GBDT)算法的优化版本,XGBoost通过一系列创新的技术实现了高效、快速的模型训练,并且具有较强的预测能力。XGBoost的成功不仅源于其核心算法的优势,还得益于其优良的性能表现和丰富的调参功能。 阅读详情

相关推荐

解决Visual C++2008安装失败,error 1935

重装系统后Visual C++没了,其他都能装上但VC2008会报这个error 1935。鉴于我把网上所有的解决方法排了一遍错,我也不知道是哪一步起效,所以就都放上来了。特别注意:报error 1935的错误原因可能不尽相同,比如我的报错开头为An error occurred,结尾为HRESULT:0x80070005。80070005 拒绝访问通常是权限问题,安装Visual C++无法写入文件夹或注册表(直接跳转第7步)

weixin_44427808的博客 1万+

(十)C++基础 STL算法

一、实验目的和要求 1.熟悉STL常用算法的基本使用方法。 二、实验内容 1.利用STL算法实现最小二乘直线拟合。 问题描述 图1 战舰长、宽观测数据散点图,基本呈线性关系 图2 战舰长、宽观测数据拟合直线的结果 算法实现 提示:可以利用vector保存x,y的数据。利用accumulate和inner_product算法可以很快速的计算x,y的均值和内积。 #include "stdafx...

脸滚键盘 545

莫兰指数stata命令_一文读懂16个sp系列stata空间计量命令及应用

spcompress:Compress Stata-format shapefile压缩数据成stata格式的shapefile2、Looking at data/观测数据2、Looking at data/观测数据grmap:Graph choropleth maps绘制等值区域图spdistance:Calculator for distance between places计算区域之间距离3...

weixin_39719989的博客 822

机器学习——基础算法(十)

机器学习——基础算法(十) 一、EM算法 注:(一)Jensen不等式:若f是凸函数,则f(Ex)≤Ef(x) (一)最大似然估计 (1)■找出与样本的分布最接近的概率分布模型。 ■简单的例子 ■10次 拋硬币的结果是:正正反正正正反反正正 假设p是每次抛硬币结果为正的概率。则:得到这样的实验结果的概率是: P=pp(1-p)ppp(1-p)(1- p)pp =p7(1-p)3 最优解是: p=0...

qq_41511262的博客 183

微信Dat文件转图片(文末含工具下载)

PC端微信dat图片转换为jpg格式

weixin_40704848的博客 8081

cadence capture CIS 之使用access创建数据库(.mdb)

cadence capture CIS 之使用access创建数据库(.mdb)准备工作新建数据库 准备工作 1、一台电脑; 2、安装 Microsoft access database; 新建数据库 打开你准备创建数据库的位置,右键单击——》新建——》 Microsoft access database(注意:文件格式要选*.mdb) 打开数据库文件,创建——》表; 对数据表进行编辑,编辑表头、编辑表的内容、增加表的数量; 编辑表头:选中要编辑的表——》表设计 编辑内容:类似于excel添

weixin_42256550的博客 3147

算法设计与分析基础(十)

算法设计与分析基础(十):变治法 首先是“变”, 将问题变形, 转换成另一个问题,变得更容易求解; 然后是“治”,对问题的实例进行求解。 变治法有三个变形: (1)实例化简——同样问题 (2)改变表现——同样实例 (3)问题化简——另一问题 实例化简——同样问题 预排序 列表若有序,列表上的部分问题更容易求解。因此很多问题需要先排序,则该问题的时间效率依赖于排序算法的效率。 回忆前面所学的排序算法: 例子:检验数组中元素的唯一性 Algorithm PEU (A[0..n-1]) // Presor

BKSW.的博客 1806

EUV光源技术路线深度解析

EUV光刻技术的关键瓶颈在于13.5纳米光源的稳定高效获取。主流技术路线从DPP放电等离子体发展为LPP激光等离子体方案,后者通过激光轰击锡液滴实现更高功率输出。新出现的LDP技术综合激光预热与放电优势,虽功率扩展性有限,但为光源技术提供了有益补充。目前LPP仍是唯一通过量产验证的方案,而LDP可能作为过渡技术应用于特定场景。EUV光源的发展实质是能量转化效率与系统可靠性的持续优化过程,各种技术路线的探索共同推动着这一核心工艺的进步。

硬核科技 556

算法基础十:八大基本排序

一、交换排序 1、冒泡排序 相邻比较,交换,把最大交换到最后 /** * 冒泡排序,两两比较 * @param data */ private static void bubbleSort(int[] data){ for(int i=0;i<data.length-1;i++){ for(int j=0;j<data.length-i-1;j++){ if(data[j]&g

千寻 236

SAP BOM反查(可追溯值至顶级)

功能介绍:BOM层数在7层以内的(含7层)的物料,执行后都可以查询到顶级的BOM,逻辑很简单,后期如BOM层数增加,可自行增加查询逻辑。 *&---------------------------------------------------------------------* *& Report ZBOM_CHECK *&---------------------...

SAP阿狸 6060

倒立摆的PLC控制(模型分析+ SCL源代码)

首先简单介绍下倒立摆模型,下面这幅图是MATLAB网站上的倒立摆模型,下面我们利用牛顿第二运动定律建立摆杆的运动方程。

RXXW_Dor的博客 3331

【算法基础十】作为程序员,是什么让你坚持不懈地学习?

✨ 这里有字节学长,腾讯学长(清华)的分享哦👏 只要你愿意学习计算机相关知识,那就让我们一起交流进步吧! ​ ✅作者简介:大家好,我是新小白2022,让我们一起学习,共同进步吧!🏆 📃个人主页:新小白2022的优快云博客 🔥系列专栏:算法基础入门 💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞 ​

新小白 1596

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【从零开始学习Go语言】十.基础算法之冒泡排序

【从零开始学习Go语言】十.基础算法之冒泡排序 借用菜鸟教程中的一张图 冒泡排序,顾名思义就是像冒泡一样进行排序,那么是怎么个冒泡法呢? 举个例子说明一下,比如有一个数组:[3 2 1 0],需要将该数组进行升序排序,即排序成:[0 1 2 3]。 冒泡排序是这样进行排序的,首先将第一个元素和第二个元素进行比较,如果第一个元素比第二个元素大,那么将这两个元素交换位置,比如这里的第一个元素是3...

一只特立独行的兔先森 6820

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

十、【React基础】DOM的Diffing算法

十、【React基础】DOM的Diffing算法

天行健,君子以自强不息 167

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

GIS算法基础(十)矢量压缩算法-光栏法

前言: 远程仓库地址:https://github.com/XiaoZhong233/GIS_ALG 光栏法是一种矢量数据的压缩算法。光栏法的基本思路是对每一条曲线上的所有点, 逐点定义一个扇形区域。若曲线的下一节点在扇形外, 则保留当前节点; 若曲线的下一节点在扇形内, 则舍去当前节点。 说明: 光栏法与道格拉斯算法都是矢量压缩算法,但是光栏法能很好的保存线的形状,而道格拉斯普克算...

ZzZzZzZ 5979

左程云算法基础班整理(十)(c++版本)

基础班十

weixin_44683202的博客 350

算法基础(十)– 分隔链表

分隔链表 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1: 输入:head = [1,4,3,2,5,2], x = 3 输出:[1,2,2,4,3,5] 示例 2: 输入:head = [2,1], x = 2 输出:[1,2] 提示: 链表中节点的数目在范围 [0, 200] 内 -100 <= Node.val <= 100 -200.

Flash~ 420

机器学习 算法基础 十 聚类

聚类 聚类是针对给定的样本,依据他们特征的相似度或距离,将其归并到若干个“类”或“簇”的数据分析问题。 在某些场景下聚类和降维是一个意思。聚类算法只作为pipline上对特征降维使用。 相似度/计算方法 当 μx==μy==0\mu_x == \mu_y == 0μx​==μy​==0 时二者相同 K均值 所以我们希望在初始的时候四个聚类中心互相离的远一点。 ...

切克闹的博客 146

机器学习---算法基础(十)EM算法

EM算法概述 EM算法即期望最大化(Expection Maximization)算法。是一种迭代算法,作为一种数据添加算法,在现在的DL学习中经常见到。 隐变量 隐变量指的是不可观测的随机变量,我们通常通过可以观测的变量来对隐变量来进行推测。例如我们知道1000个人的身高体重,但是我们并不了解这些样本中的男女比例,对于男女比例来说就是一个隐变量。 EM算法的感性理解 EM算法的公式推导 对于EM算法简单的说可以理解为以下几步: 预测非隐变量的参数(E) 根据预测的非隐变量的参数,估算隐变量(M) 根

qq5024581的博客 469

从0开始的算法(数据结构和算法)基础(十)

分治的字面意思是分而治之,将问题进行分化,从而进行处理,最后将结果进行合并。尽量的将问题分的不可以再分,分到和操作系统里面的原语是一样的,用较为多空间进行多线程的并行,节省时间运行。递归调用可能会导致较大的递归开销,特别是在递归深度较大的情况下,可能会导致栈溢出。在某些情况下,分治方法可能会导致对同一子问题的重复计算,从而降低效率。例如,在动态规划问题中,使用简单的分治方法可能会导致大量重复计算。

Solidao的博客 1089

【算法集训】基础数据结构:十、矩阵

矩阵其实就是二维数组,这些题目在9日集训中已经做过,这里做的方法大致相同。

子琦的博客 1446

动态算法(基础十)笔记回顾

动态算法(基础十)笔记回顾

dadwdDW的博客 512

【Python 算法零基础 4.排序 ⑩ 希尔排序】

当左索引小于右索引时,结束递归。

m0_73983707的博客 1040
上一篇: 算法基础九
下一篇: 算法基础十一
geek-wmy
博客等级 码龄9年 322粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值