- 博客(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
原创 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
原创 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关注的人