自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 《剑指offer》数组中重复的数字

知道找到那个长度为1却有两个以上重复数的区间为止。解法一:我们可以创建一个长度至少为n的辅助数组,辅助数组初始化为0,然后逐一把原数组的数字复制到辅助数组中,当原数组的元素是m时,把辅助数组下标为m的值加1,当某下标i的元素值大于1时,就说明i是重复的数字,这种解法时间复杂度是O(n),且需要利用O(n)的辅助空间,题目要求空间复杂度是O(1),显然不是最优解。解法二:哈希表,利用哈希表存储数组,实际上和解法一是一样的,当哈希表的元素值大于1时,就是重复值,也需要O(n)的辅助空间。如题,这里有三种解法。

2024-05-04 00:35:03 136

原创 牛客 剑指offer JZ3数组中重复的数字

i,就比较numbers[i]和numbers[numbers[i]],如果两数相等,说明有重复数,这个重复数就是numbers[i].如果不相等,就交换numbers[i]和numbers[numbers[i]]。这里应当有个隐藏的结论,我目前还没有理解这个结论,也是解法三的前提,即如果数组元素都不重复,使得数组数字等于下标,只需要不停的交换数组数字和以数组数字为下标的位置的数字,即进行swap(numbers[i],numbers[numbers[i]])的操作,就可以把i放到他应该的位置上。

2024-04-26 17:04:24 252

原创 智能计算 第六次实验 蚁群算法实验题目

1.北京等六城市的距离表如下。请据此表求解TSP(Travelling Salesman Problem) 问题。即给定N个城市,从某一城市开始走遍所有城市但不许重复,最后回到出发点,要求总路径最短。2.下面展示了13个城市之间的距离,现要求从城市A出发,找一条最短的旅游顺序,使得游览所有城市后回到城市A。3.寻找函数y=1-cos(3*x)*exp(-x)在[0,4]最大值。表2 13个城市间距离表(单位km)表1 六城市间距离表(单位km)

2023-06-18 19:32:10 570 3

原创 Acwing 4210数字

给定一个大于2的十进制正整数A该数字在2∼A−1 进制表示下的各位数字之和均可以求出。例如,数字123在16进制表示下,共有2位:第1位是7,第2位是11,各位数字之和为18。现在,请你将A在2∼A−1 进制表示下的各位数字之和全部相加,并将得到的结果除以A−2,最终结果以最简分数形式输出。输入格式一个十进制正整数A。输出格式输出格式为X/Y,其中X表示输出答案的分子,Y表示输出答案的分母。数据范围前三个测试点满足3≤A≤10...

2022-01-15 23:01:39 285

原创 Acwing 789数的范围

给定一个按照升序排列的长度为n的整数数组,以及q个查询。对于每个查询,返回一个元素k的起始位置和终止位置(位置从0开始计数)。如果数组中不存在该元素,则返回-1 -1。输入格式第一行包含整数n和q,表示数组长度和询问个数。第二行包含nn个整数(均在1∼100001∼10000范围内),表示完整数组。接下来q行,每行包含一个整数k,表示一个询问元素。输出格式共q行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中不存在...

2022-01-04 19:49:39 213

原创 2058笨拙的手指

题目描述奶牛贝茜正在学习如何在不同进制之间转换数字。但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔。每当贝茜将数字转换为一个新的进制并写下结果时,她总是将其中的某一位数字写错。例如,如果她将数字1414转换为二进制数,那么正确的结果应为11101110,但她可能会写下01100110或11111111。贝茜不会额外添加或删除数字,但是可能会由于写错数字的原因,写下包含前导00的数字。给定贝茜将数字NN转换为二进制数字以及三进制数字的结果,请确定NN的正确...

2022-01-03 20:20:14 141

原创 KMP算法的原理和C++实现

前言最近在实践费曼学习法,将其运用于学习中。kmp算法是数据结构与算法中一个艰难的知识点,弄懂这个算法的原理并使用C++实现耗费了数天时间。这篇博客梳理了KMP算法的原理和我C++实现算法思路。简介KMP算法是基于BF算法的优化算法,BF算法是将主串分解成(主串长度-模式串长度+1)个子串,再一一比较这些子串和模式串,每次比较都要回溯主串的指针,而KMP算法就是在回溯部分进行了优化,主串指针不进行回溯,而是回溯模式串的指针到特定的位置继续匹配,KMP算法的关键部分就是在与寻找模式串回溯的特定位置

2021-10-02 11:07:19 1211

原创 BF算法(Brute-Force)算法原理及C++实现

BF算法的概念 现在有两个串,主串(文本串)M,子串(模式串)P。串的模式匹配就是在主串M中寻找子串的位置,就是子串的定位运算。 BF算法是串的暴力匹配算法,它的时间复杂度是很高的,也就是采用穷举的方法一个一个检查主串中是否能匹配到子串。BF算法的原理从文本串的指定位置与模式串的第一个位置开始逐个比较字符是否相同。可以设置两个指针i、j分别指向串M、串P的起始位置,比较M[i]和P[j],如果两个字符相等,i、j都加一(即串M和串P右移一格);如果M[i]!=P[j],则将i...

2021-09-26 22:18:27 2264 1

原创 PAT (Basic Level) Practice 1008 数组元素循环右移问题

一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A​0​​A​1​​⋯A​N−1​​)变换为(A​N−M​​⋯A​N−1​​A​0​​A​1​​⋯A​N−M−1​​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?输入格式:每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。输出格式:在一行中输出循环右移M位以

2021-05-29 12:21:44 39

原创 PAT (Basic Level) Practice 1007 素数对猜想

让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数。显然有d​1​​=1,且对于n>1有d​n​​是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。现给定任意正整数N(<10​5​​),请计算不超过N的满足猜想的素数对的个数。输入格式:输入在一行给出正整数N。输出格式:在一行中输出不超过N的满足猜想的素数对的个数。输入样例:20输出样例:4...

2021-05-28 23:23:49 40

原创 PAT (Basic Level) Practice 1006 换个格式输出整数 !

“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有P、A、T这三种字符,不可以包含其它字符; 任意形如xPATx的字符串都可以获得“答案正确”,其中x或者是空字符串,或者是仅由字母A组成的字符串; 如果aPbTc是正确的,那么aPbATca也是正确的,其中a、b、c均或者是空字符串,或者是仅由字母A...

2021-05-27 21:11:09 64

原创 PAT (Basic Level) Practice 1005 继续(3n+1)猜想

卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对n=3进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们称 5、8、4、2 是被 3“覆盖”的数。我们称一个数列中的某个数n为“关键数”,如果n不能被数列中的其他数字所覆...

2021-05-26 23:11:18 37

原创 PAT (Basic Level) Practice 1004 成绩排名

读入n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩 ... ... ...第 n+1 行:第 n 个学生的姓名 学号 成绩其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之间的一个整数,这里保证在一组测试用例中没有两个学生的成绩是相同的。输出格式:对.

2021-05-25 13:33:25 86 2

原创 PAT (Basic Level) Practice 1002 写出这个数

读入一个正整数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含 1 个测试用例,即给出自然数n的值。这里保证n小于10​100​​。输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。AC代码如下:#include<iostream>#include<string>using namespace std;void tranform_sum(strin...

2021-05-23 22:13:15 51

原创 PAT (Basic Level) Practice 1001 害死人不偿命的(3n+1)猜想

今天是做PAT乙级的第一天,PAT乙级有95道题目,希望在大二开学前能全部AC!卡拉兹(Callatz)猜想:对任何一个正整数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……...

2021-05-23 22:01:38 59

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除