首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

前端学习数据结构与算法系列(五):冒泡排序理解与实现

特点 从序列末尾开始比较相邻两个数字大小 如果比较数据比左边相邻数据小,左移当前比较数据。 直至当前比较数据位置等于当前比较次数时,一轮结束。...比较完一轮后,如果当前轮数不等于序列长度继续从末尾开始比较。 图解示例 如图所示,将下列数字按从小到大顺序进行排列。 从数据末尾开始比较相邻两个数字大小 比较后,发现6<7,故交换位置。...- (当前循环次数+2) 得到下标后,分别获取当前比较和与之左侧相邻 判断当前比较数组下标是否等于当前轮数 如果相等轮数自增1,如果当前轮数不等于数组长度循环继续执行 如果不相等,比较当前与左侧相邻大小...,如果当前<左侧相邻进行位置交换 如果当前轮数等于数组长度循环结束,返回排序好数组。...console.log(`第 ${round}轮结束: ${arr},共比较 ${i}次`); // 轮数增加 round ++; // 如果当前轮数不等于数组长度循环继续

69520

【Leetcode-58.最后一个单词长度 -66.加一】

最后一个单词长度 题目:给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词长度。单词是指由字母组成、不包含任何空格字符最大子字符串。...我们思路是,从后往前遍历,当遇到空格就跳过,当遇到第一个有效字符时,就开始进入循环统计,当再次遇到空格或者i越界访问就结束循环返回当前ret; 下面看代码和注释: int lengthOfLastWord...我们思路是,从后往前遍历,判断最后一位是否是9,若是9,如1,2,3,9,改成0,继续判断下一位,当下一位不是9,就加1,返回这个数组,即返回1,2,4,0;若这个数组全是9,如9,9,9,9,跳出循环后...= 10) { //不等于10的话直接返回数组,*returnSize是返回数组长度 *returnSize = digitsSize...+1全是10,就跳到这里 //我们需要开辟一个新空间,大小为digitsSize + 1,元素均为0; //只需要将第一位改成1即可,然后返回这个数组 int* arr

8410

技术栈系列基础篇1-shell

= 不相等,比较两个数字,不同返回true[ $x !...[ -x $file ] 返回true-s file检测文件是否为空(文件大小是否大于0),不为空,返回true[ -s $file ] 返回true -e file检测问价(包括目录)是否存在,如果是..."$x 等于 $y"elif [ $x -ne $y ]; thenecho "$x 不等于 $y"fi5.2、循环语句格式:for 循环# for 循环1for arg in elem1 elem2...函数返回 - return 返回函数返回返回类型只能为整数(0-255)。如果不加 return 语句,shell 默认将以最后一条命令运行结果,作为函数返回。...函数返回在调用该函数后通过 $? 来获得。所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至 shell 解释器首次发现它时,才可以使用。调用函数使用其函数名即可。

62720

第四章5:创建猜单词游戏(Hangman)

我们在使用循环时,如果不清除输出,循环将不断相互叠加输出。 声明游戏变量 接下来,我们要了解运行游戏所需变量并声明它们。...通过将列表乘以单词长度,可以将列表内元素复制,得到与单词长度一致列表。 创建游戏循环 无论程序大小,每个游戏都有一个主循环。我们循环将执行我们在“最终设计”部分中定义逻辑。...如果键入“ quit”,game_over变为True(当我们输入“ quit”时才会发生),程序停止循环。 ---- 注意:在继续操作之前,请始终确保代码块运行完毕。...根据所选择单词,你将获得不同输出。如果选择单词是四个字母,我们将得到“猜单词:_ _ _ _”和“生命:7”输出。...现在,如果玩家猜对了所有字母,便可以取得获胜。我们使用与之前相同join方法,将列表转换为字符串,因此,如果列表中仍有下划线,连接字符串将不等于随机词。

2.1K20

一篇文章让你彻底掌握 Shell

-ge 检测左边数是否大于等于右边如果是,返回 true。 [ $a -ge $b ] 返回 false。 -le 检测左边数是否小于等于右边如果是,返回 true。...-c file 检测文件是否是字符设备文件,如果是,返回 true。 [ -c $file ] 返回 false。 -d file 检测文件是否是目录,如果是,返回 true。...-w file 检测文件是否可写,如果是,返回 true。 [ -w $file ] 返回 true。 -x file 检测文件是否可执行,如果是,返回 true。...函数返回 - return 返回函数返回返回类型只能为整数(0-255)。如果不加 return 语句,shell 默认将以最后一条命令运行结果,作为函数返回。...函数返回在调用该函数后通过 $? 来获得。 所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至 shell 解释器首次发现它时,才可以使用。调用函数使用其函数名即可。

2.1K10

深入探讨源码-HashMap

如果第一个元素不为空,判断结构是不是红黑树,如果是红黑树调用红黑树插入方法; 如果不是红黑树,依次遍历链表,如果链表有和传入key相同key,则用新value替换原来value,并返回旧...tableSizeFor方法 如果cap是2次幂返回cap,否则将cap转化为一个比cap大且差距最小2次幂。...2幂(initialCapacity如果就是2幂,返回还是这个数)。...下面看看这几个无符号右移操作:如果n这时为0了(经过了cap-1之后),经过后面的几次无符号右移依然是0,最后返回capacity是1(最后有个n+1操作)。这里只讨论n不等于0情况。...两节点 key 相同(hash一定相同),导致冲突 两节点 key 不同,由于 hash 函数局限性导致hash 相同,冲突 两节点 key 不同,hash 不同,但 hash 对数组长度取模后相同

33220

Shell 快速指南

-ge 检测左边数是否大于等于右边如果是,返回 true。 [ $a -ge $b ] 返回 false。 -le 检测左边数是否小于等于右边如果是,返回 true。...-c file 检测文件是否是字符设备文件,如果是,返回 true。 [ -c $file ] 返回 false。 -d file 检测文件是否是目录,如果是,返回 true。...-p file 检测文件是否是有名管道,如果是,返回 true。 [ -p $file ] 返回 false。 -u file 检测文件是否设置了 SUID 位,如果是,返回 true。...-w file 检测文件是否可写,如果是,返回 true。 [ -w $file ] 返回 true。 -x file 检测文件是否可执行,如果是,返回 true。...fi 使用case 如果你需要面对很多情况,分别要采取不同措施,那么使用case会比嵌套if更有用。

3.3K101

快慢指针删除数组目标值

problem 给你一个数组 nums 和一个 val,你需要 原地 移除所有数值等于 val 元素,并返回移除后数组长度。...不要使用额外数组空间,你必须使用 O(1) 额外空间并 原地 修改输入数组。 元素顺序可以改变。你不需要考虑数组中超出新长度后面的元素。...solution 快慢指针做法比较有趣,只需要一个 for 循环即可解决,时间复杂度为 O(n) ,总体思路就是有两个指针,前面一个后面一个,前面的用于搜索需要删除,当遇到需要删除时,前指针直接跳过...最后只需输出慢指针索引即可。 ? ? ? ? ? ? ? ? ? 最后由 ? 删除2后 ? 变为了 ? 返回i+1,就是慢指针下标。...// 不等于目标值时,赋值给num[i],并移动i指针+1 nums[i++] = nums[j]; } return i;

51410

Linux Shell基础篇三 - 内置命令

、while、select 或 until 循环 builtin 执行指定 shell 内建命令 caller 返回活动子函数调用的上下文 cd 将当前目录切换为指定目录 command 执行指定命令...好处就是可以将经常操作比较复杂命令进行设置别名,通过别名操作提高工作效率。若该命令且不带任何参数,显示当前 Shell 进程中所有别名列表。...,可以返回不同状态代表不同错误。...查看全部Shell变量与函数 1 declare [-fF] 选项 说明 无参数 查询全部Shell变量与函数定义, 与set功能一模一样 -f 查询显示函数定义 -F 查询显示函数名字 test...= 不等于 \< 小于 \> 大于 -z 字符串 字符串长度为零为真 -n 字符串 字符串长度不为零为真 演示: 1234567891011121314151617181920212223242526272829303132

1.3K30

LeetCode和面试中常客,巧妙两指针算法

遗留问题 我们先来看看昨天留下问题,如果数组当中元素存在重复,让我们返回元素最早出现位置,应该怎么操作呢?...LeetCode-27 难度-Easy 给你一个数组 nums 和一个 val,你需要 原地 移除所有数值等于 val 元素,并返回移除后数组长度。...不要使用额外数组空间,你必须使用 O(1) 额外空间并 原地 修改输入数组。 元素顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 说明: 为什么返回数值是整数,但输出答案是数组呢?...// 根据你函数返回长度, 它会打印出数组中 该长度范围内 所有元素。...如果上面的代码看起来比较懵,我们还可以换一种写法。假设本题没有空间大小限制,你会怎么操作? 很简单,我们直接把数组中不等于val元素放入结果即可。

50210

【C语言】Leetcode 27.移除元素

= val) { // 如果源数组当前位置不等于目标值val nums[dst++] = nums[src++]; // 将当前复制到目标数组中,并分别递增源指针和目标指针...} else { ++src; // 如果源数组当前位置等于目标值val,只递增源指针,不将该复制到目标数组中 } }...return dst; // 返回新数组长度 } 以上代码主要思路是使用两个指针src和dst,其中src指向原始数组中元素,而dst指向新数组中位置。...当src指向元素不等于目标值val时,将该元素复制到新数组中,并递增dst和src指针;当src指向元素等于目标值val时,只递增src指针,不进行复制操作。最终返回dst作为新数组长度。...最终得到就是dst指针所指向之前数组元素,返回数组大小为dst。

6010

2023-12-09:用go语言,给你两个整数数组 arr1 和 arr2, 返回使 arr1 严格递增所需最小「操作」数(

2023-12-09:用go语言,给你两个整数数组 arr1 和 arr2, 返回使 arr1 严格递增所需最小「操作」数(可能为 0)。...如果无法让 arr1 严格递增,请返回 -1。 输入:arr1 = [1,5,3,6,7], arr2 = [4,3,1]。 输出:2。...• 若f不等于-1且小于arr2长度,更新cur为arr2[f],同时f加1,times加1。 • 若f等于-1或大于等于arr2长度,跳出循环。 5.返回递归调用结果ans,即最小操作数。...算法2(makeArrayIncreasing2): 1.对arr2进行排序并去除重复元素,生成新数组help,并统计cnt为help长度。 2.创建dp数组,初始为-1。...• 若dp[j+1]不等于最大整数,更新dp[i+1]为times+dp[j+1]与dp[i+1]中较小。 • 若f不等于-1且小于m,更新cur为arr2[f],同时f加1,times加1。

11930

LinuxShell编程语法集锦

-b file 检测文件是否是块设备文件,如果是,返回 true。 [ -b $file ] 返回 false。 -c file 检测文件是否是字符设备文件,如果是,返回 true。...-p file 检测文件是否是有名管道,如果是,返回 true。 [ -p $file ] 返回 false。 -u file 检测文件是否设置了 SUID 位,如果是,返回 true。...-s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。 -e file 检测文件(包括目录)是否存在,如果是,返回 true。...= 不相等则为真-z 字符串 字符串长度为零为真-n 字符串 字符串长度不为零为真num1="alasijia"num2="alasi1jia"if test $num1 = $num2then..."$file" > /dev/null 2> /dev/null # 这里grep函数是有返回,这里意思是,返回有或者无时重定向到指定位置,无该文件时重定向到另一指定位置 # 这里要注意

1.6K30

shell编程入门_unix编程

:判断表示程序退出代码,返回0代表成功,返回非0代表失败 正确退出显示0 错误退出显示非0 $#使用 $*使用 $@使用 6....0 -x 文件名:如果文件存在且可执行则为真0 -a 文件名:and -o:文件名:or 补充1:用于数值比较选项 -eq:等于 -gt:大于 -lt:小于 -ne:不等于...= 不等于 -z:长度为0为true -n:长度不位0为true str:字符串不为空则为true 补充3:文件测试或比较 -d:如果是目录则为true -f:如果是文件则为true...循环控制语句 for [ 循环条件:循环控制] do 循环体 done 循环月份: (3)while循环控制语句 while [循环条件] do [循环体] [循环控制...本站提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.3K10
领券