- 博客(7)
- 收藏
- 关注
原创 实现 strStr() 函数,长字符串里搜短字符串
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 输入: haystack = "hello", needle = "ll" 输出: 2 输入: haystack = "aaaaa", needle = "bba" 输出: -1 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/implement-strstr 著作权归
2021-02-04 13:15:17
343
原创 判断回文数
回文数(来源LeetCode) 给你一个整数 x ,如果 x 是一个回文整数,返回 ture ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。 示例1: 输入:x = 121 输出:true 输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 思路: 1.所有负数都不是回文数 2.对于非负数,先将数字逆序,然后对比 3.数字逆序过程中,考虑
2021-02-03 13:34:36
151
转载 C++错误:“const char *“ 类型的值不能用于初始化 “char *“ 类型的实体
https://blog.youkuaiyun.com/weixin_44690935/article/details/108502989
2021-01-29 10:32:09
629
原创 给定两个单链表,找出两个链表的公共节点
思路 若两个单链表有公共节点,那么这两个单链表从第一个公共节点开始,之后的所有节点均为公共节点。 若两个链表一样长,则直接从头向后同步遍历,第一个相同节点开始即为公共部分; 若两个链表不一样长,先把两者长度搞一样,再遍历 NodeList Search_common(NodeList L1, NodeList L2) { int len1 = Length(L1), len2 = Length(L2); int distance = 0; NodeList longList, shortList;
2021-01-12 16:05:31
1293
原创 求两个数组合并后的中位数
按照顺序排列的两个数组,数组A:[a1,a2,…,an],数组B:[b1,b2,…,bn],求合并后的数组C:[c1,c2,…,c2n]的中位数 1、求A、B两数组各自的中位数m1,m2; 2、比较m1,m2,: 若m1 = m2,合并后中位数仍等于m1; 若m1 < m2,舍弃数组A左半部分和数组B右半部分,要求舍弃的元素数目一致 若m1 > m2,舍弃数组A右半部分和数组B左半部分,要求舍弃的元素数目一致 3、重复步骤2直至A、B两数组都只剩一个元素 C++实现: int M_search(
2021-01-11 14:47:09
1697
1
原创 求数组中缺失的最小正整数
思路及C++实现 没跑过,多半有bug,法1法2参考https://blog.youkuaiyun.com/stpeace/article/details/109544261 法3和法2类似但是比较好想,空间复杂度更高 //求数组中缺失的最小整数,法1,巧妙标记法,时间复杂度o(n),空间复杂度o(1) int min_search_1(int input[], int n) { for (int i = 0; i < n; i++) { if (input[i] <= 0) //将所有非正数转化为
2021-01-11 14:37:07
391
原创 冒泡算法
比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,执行完毕后,最小的元素被放在最后一个。 重复以上的步骤,每次比较次数-1,直到不需要比较 int main() { int arr[9] = { 0,2,8,4,5,1,3,9,7 }; //用到arr[j+1],j的取值最多到7 for (int i = 0; i < 9 - 1; i++) { for (int j = 0; j < 9 -1 - i; j++) { if (arr[j.
2020-12-21 16:28:51
90
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人