- 博客(11)
- 收藏
- 关注
原创 leetcode 205. 同构字符串
typedef enum{false=0,true}bool; bool isIsomorphic(char * a, char * b){ char num1[127]={0},num2[127]={0};//ASCLL码最多有去126个 int i =1; while(*a){ if(num1[*a]!=num2[*b])//判断对应位置的元素与格式不对应时,输出false return false; num1[*a++]=n
2021-03-30 11:24:06
119
原创 leetcode 28.实现strStr
实现strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 思路: 1.对应位置上的字符相等 2.相同字符串的个数等于needle长度 #include <stdio.h> #include <windows.h> /** * Note: The returned array must be malloced, assume ca
2020-08-19 17:46:17
154
原创 leetcode 8.字符串转换整数 (atoi)
字符串转换整数 (atoi) 请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下: 如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。 假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。 该字符串在有效的整数部分之后也可能会存在多余的字符,那么这些字符可以被忽略,它们对函数不应该造成影响。 注意:假如该字符串中的第
2020-08-15 23:04:32
125
原创 leetcode 125.验证回文串
验证回文串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 思路: 1.判断字符串中的字母和数字 2.大小写归一 3.双指针首尾同步比较 #include <stdio.h> #include <windows.h> /** * Note: The returned array must be malloced, assume caller calls free(). */ typedef enu
2020-08-15 22:00:12
131
原创 leetcode 242.有效的字母异位词
有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 字母异位:即字母长度相同,字母顺序不同。 思路:与387.字符串中的第一个唯一字符的方法相似,先计算所给字符在26字母表中出现的次数,再判断两个字符串中每个字母出现的次数是否相等。 #include <stdio.h> #include <windows.h> /** * Note: The returned array must be malloced, assume caller
2020-08-15 15:13:44
108
原创 leetcode 387.字符串中的第一个唯一字符
字符串中的第一个唯一字符 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 思路:遍历两次,根据字母顺序表第一次循环记录每个字符出现的次数,第二次循环判断并找出第一个不重复的字符。 #include <stdio.h> #include <windows.h> /** * Note: The returned array must be malloced, assume caller calls free(). */ int firstUni
2020-08-15 14:47:45
122
原创 LeetCode 283.移动零
移动零 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 思路:循环数组,跳过数组元素为零的,并将非零的元素放在原数组中,末尾元素补零。 #include <stdio.h> #include <windows.h> void moveZeroes(int* nums, int numsSize){ int index = 0; int i = 0;
2020-08-07 16:21:51
140
原创 LeetCode 1.两数之和
两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 逐个遍历: int *twoSum(int* nums, int numsSize, int target,int* returnSize){ int *ret = (int *)malloc(sizeof(int)*2); for(int i=0; i < numsSize -
2020-08-07 15:51:06
247
原创 LeetCode 136.只出现一次的数字
只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 异或运算:0与任何数异或为任何数,任何数自己异或为0。(两值相同,异或为0;两值互异,异或为1.) 时间复杂度:O(n),遍历一遍n个元素的数组; 空间复杂度:O(1). 一行代码 int singleNumber(int* nums, int numsSize){ return numsSiz
2020-08-06 11:44:33
140
原创 LeetCode 4.存在重复元素
4.存在重复元素 给定一个整数数组,判断是否存在重复元素。如果任意一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 1.暴力法:时间复杂度o(n^k),超时 bool containsDuplicate(int* nums, int numsSize){ int i,j; if (numsSize == 0) { return 0; } for(i = 0; i<numsSize-1; i++)
2020-08-05 17:06:17
161
原创 LeetCode 3.旋转数组
3.旋转数组 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 (1)暴力法 int rotate(int* nums, int numsSize, int k){ int i; if (numsSize == 0 || k <= 0) { return 0; } int nums1[100]={0}; for(i=0; i<100; i++) { nums1[i] = nums[i
2020-08-04 17:43:39
92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅