自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 17.电话号码的数字组合

给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。[]

2024-10-06 19:43:37 252

原创 16.最接近的三数之和

给你一个长度为n的整数数组nums和 一个目标值target。请你从nums中选出三个整数,使它们的和与target最接近。返回这三个数的和。假定每组输入只存在恰好一个解。2与 target 最接近的和是 2 (-1 + 2 + 1 = 2)。0与 target 最接近的和是 0(0 + 0 + 0 = 0)。

2024-10-03 11:54:13 201

原创 15.三数之和

给你一个整数数组nums,判断是否存在三元组满足i!= ji!= k且j!= k,同时还满足。请你返回所有和为0且不重复的三元组。答案中不可以包含重复的三元组。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。[]唯一可能的三元组和不为 0。[[0,0,0]]唯一可能的三元组和为 0。

2024-10-02 18:08:33 349

原创 14.最长公共子串

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。"fl"""输入不存在公共前缀。

2024-10-02 17:08:03 317

原创 13.罗马数字转整数

罗马数字包含以下七种字符:IVXLCD和M。例如, 罗马数字2写做II,即为两个并列的 1。12写做XII,即为XII。27写做XXVII, 即为XXVII。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而是IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为IX。IVXXLCCDM给定一个罗马数字,将其转换成整数。

2024-10-02 15:42:30 413

原创 12.整数转成罗马数字

最好的例子解释就是找零钱,比如找666块钱,我们一般不会考虑666张1块对吧,更多的考虑先是拿6张100,然后6张10,6张6块这样子,那么这题其实也是同理的。贪心算法是一种在每一步选择中都采取当前状态下最优的选择(即最“贪心”的选择),以期望最终结果是全局最优的算法。这就是贪心算法的思想。从题目看得出,罗马数字非常贪心,总是往最大的取,比如说 4 是 IV,而不是 IIII,9 是 IX,而不是 VIIII。3000 = MMM 由于 1000 (M) + 1000 (M) + 1000 (M)

2024-10-02 15:13:38 510

原创 11、盛最多水的容器

那么我们可以采用双指针来优化这个时间复杂度,一左一右,一个指向数组的头部,一个指向数组的尾部,然后我们计算当前两个指针所指向的边界能形成的容器的水容量,并更新最大值。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。也就是外层循环遍历所有可能的左边界,内层循环遍历所有可能的右边界,然后计算当前两个边界能形成的容器的水容量,并更新最大值。比较容易出错的就是计算水量用的是小的一边(Math.min),水桶效应。

2024-10-02 11:36:25 138

原创 9.回文数

从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。是指正序(从左向右)和倒序(从右向左)读都是一样的整数。从右向左读, 为 01。因此它不是一个回文数。是一个回文整数,返回。

2024-09-28 14:46:21 234

原创 8.字符串转换整数

空格问题用trim函数进行去除,符号则是新定义一个用于判断的变量,然后判断charAt(0)这个位置的字符究竟是+ 还是 - 也有可能没有,那就默认是正的。第 2 步:"1337c0d3"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 2 步:"0-1" (当前没有读入字符,因为这里不存在 '-' 或者 '+')第 2 步:"42"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 1 步:"1337c0d3"(当前没有读入字符,因为没有前导空格)-1" (读入 "0";

2024-09-22 12:14:13 516

原创 7、整数反转

然后还有另一种方法,那就是和水仙花数类似的,提取最后一位,提取最后一位当然使用%运算,然后再用/去掉最后一位,那么就只需要考虑会不会溢出的问题了。首先第一眼看到题目考虑的就是使用StringBuilder转成字符串然后reverse(),但是需要考虑他是正数还是负数的问题。用最大整数来说就是还没到ret到倒数第二位的时候就已经比他大了,或者最后一位的时候大于7(为什么是7看上图)。如果反转后整数超过 32 位的有符号整数的范围。给你一个 32 位的有符号整数。中的数字部分反转后的结果。

2024-09-21 15:39:42 295

原创 5、最长回文子串

设计状态是DP的基础。接下来的设计转移,有两种方式:一种是考虑我从哪里来(本文之前提到的两个例子,都是在考虑“我从哪里来”);另一种是考虑我到哪里去,这常见于求出f(x)之后,简单来说,动态规划其实就是,给定一个问题,我们把它分解成若干个子问题,直到子问题可以直接求解,然后再逐步合并子问题的解,最终得到原问题的解。其实这题方法很多,有动态规划(DP)、中心扩展算法、马拉车算法。已经解决过的子问题的解,避免重复计算。"aba" 同样是符合题意的答案。动态规划的核心思想就是。

2024-09-16 18:47:13 177

原创 3、无重复字符的最长子串

滑动窗口

2024-09-16 16:28:27 222

原创 java单向链表的模拟实现

java数据结构中链表的模拟实现

2022-07-03 21:29:10 247 1

原创 memcpy实现

和老规矩不同 这次我们先来探究一下memcpy和strcpy的不同:1、memcpy可控制个数,但strcpy不能,当然strncpy也可控制。2、也是最主要的区别:memcpy可以是任意数据,但是strcpy却只能字符。接下来我们来研究一下源代码吧:memcpyvoid * memcpy ( void * destination, const void * source, size_t num );需要注意的是 这里的num是所需要的字节数 而不是元素个数。(这意味着我们需要把数

2022-03-06 16:49:10 807

原创 strcat模拟实现

老规矩 看源代码:strcatchar * strcat ( char * destination, const char * source );然后这个函数是拼接两个字符串:将src的拼接到des的后面。那么跟着这个逻辑就能很好的想到如何编写代码了:1、让des指针指向最后一个地址;2、通过指针让des后面拼接出src的字符;还处理需要一些细节问题比如:1、防止他们是空指针的assert。2、返回值的处理问题知道这些之后就可以开始编写啦:char* myst

2022-03-06 15:14:32 135

原创 strcmp模拟实现

strcmpint strcmp ( const char * str1, const char * str2 );首先我们先解释一下这个函数的实现逻辑:当str1 > str2时 返回 1;当str1 = str2时 返回 0;当str1 < str2时 返回 -1;然后我们再考虑一下模拟实现的逻辑和易错点:1、我们需要一个个对应的比 可能会出现相等的情况,那么我们需要比下一个 也就是需要++;2、我们还需要考虑出现‘\0’的情况 所以在条件上 我们需要自然而

2022-03-06 12:21:39 281

原创 strcpy模拟实现

老规矩,还是先查看一下strcpy的源代码:strcpychar * strcpy ( char * destination, const char * source );所以 我们很容易就能写出如下的代码:char* mystrcpy(char* des, const char* src){ char* ret = des; while (src != '\0') { *des = *src; des++; src++; } return ret;}但其实

2022-03-06 11:33:51 74

原创 模拟实现strlen

依旧是先看库函数的源代码:strlensize_t strlen ( const char * str );strlen是一个求字符串长度的函数,其机制为数出‘\0’前的字符个数,因此我们的第一种办法就有可而知:一、计数法:int mystrlen(const char* str){ int count=0; char* cp = str;//这里定义一个新指针是为了不破坏原指针的指向。 while (cp != '\0')//条件为'\0'前 { count++;//

2022-03-06 11:03:04 67

原创 利用冒泡法模拟实现qsort函数

在模拟开始之前,我们得先查阅一下该函数的源代码,如下:qsortvoid qsort (void* base, size_t num, size_t size, int (*compar)(const void*,const void*));然后我们先分析一下对应参数的具体含义:base指的是目标数组,num指的是元素个数, size指的是数组中单个元素的字节大小,最后则是一个函数指针 compar。很明显,难点就在于如何实现这个函数指针的功能,在这里,我采用了..

2022-03-06 10:09:28 177

原创 C语言程序设计之分支结构(含pta)

该系列为 对C语言的每一个单元进行知识点归纳与讲解,同时也将我在Pta中所做过的pta的题目一一展示,既作为对自己的复习,也希望能对大家一些帮助。

2021-12-21 21:43:15 2042

原创 C语言程序设计之顺序结构(含pta)

该系列为 对C语言的每一个单元进行知识点归纳与讲解,同时也将我在Pta中所做过的pta的题目一一展示,既作为对自己的复习,也希望能对大家一些帮助。

2021-12-21 19:50:29 831

空空如也

空空如也

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

TA关注的人

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