leetcode刷题
Curious*
这个作者很懒,什么都没留下…
展开
-
leetcode每日一题136 只出现一次的数字
力扣给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素解题思路:使用位异或的新思想,相同为0,不同为1,1^1=0,1 ^ 0=1,0^0=0同理可推,a^ a= 0,a ^ b=1,不断循环比较,则最后一个为返回值。代码如下int singleNumber(int* nums, int numsSize){ int result=0; for(int i=0;i<numsSize;i++){ result^=nums[i]; } retu原创 2021-08-08 23:25:21 · 86 阅读 · 0 评论 -
leetcode刷题,反转字符串中的单词
反转字符串中的单词给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序问题分析:此类问题,很明显两种解法,第一种为空间换时间,首先定义一个数组,长度与原来类似,在遍历过程中,遇到空格则执行一次反转,且每次记录位置,这样就能得到一个新的数组,且数组中每个单词都是反转了的。代码如下:char* reverseWords(char* s) { int length = strlen(s); char* ret = (char*)malloc(sizeof(c原创 2021-07-13 23:57:47 · 276 阅读 · 0 评论 -
leetcode 167两数之和
leetcode刷题两数之和给定一个已按照 升序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。问题分析:由于数组有序排列,因此可想到渐进求和,设置原创 2021-07-11 10:45:08 · 188 阅读 · 0 评论 -
leetcode刷题,283移动零元素
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序题目分析:由于题目中要求将0移动到末尾,因此可用if判断是否为0,其次分析移动规律,可采用两个指针进行运算,左边指针指向处理好的数据,即左指针左边均不为0,右指针指向还没有处理的数据,但左右指针中间均为0。代码如下int swap(int *a,int *b){ int t; t=*a; *a=*b; *b=t}void moveVoid(int *nums,int numsSize){ int原创 2021-07-11 00:00:35 · 50 阅读 · 0 评论 -
leetcode每日一题 189旋转数组
旋转数组问题给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。问题分析:给定数组尚未明确长度、移动k个位置为变量,此时需要考虑情况为k>数组长度是如何旋转,当数组只有一个元素时如何旋转。通过计算发现数组元素下标为i的元素移动后的位置下标为(i+k)%n(n代表原来数组长度),但还未考虑仅有一个元素情况,因此在进行循环时,可采用++i的方法,倘若只有一个数据,则依旧可得出相等的结果。具体代码以及注释如下,(采用辅助空间O(n))代码:void rotate(int* num原创 2021-07-09 18:54:45 · 105 阅读 · 0 评论 -
leetcode每日刷题977有序数组的平方
977.有序数组的平方题目如下分析题目,有多种方法可完成,但最简单的是使用C语言qsort函数,直接调用并返回排序后的结果,关于qsort函数看这位大佬的解析。链接: qsort的用法.int comp(const void* a, const void* b) {//升序排序 int a = *(int*)a, b = *(int*)b;//将传入指针类型参数转换为值 return a - b;//判断升序还是降序,如果是b-a则是降序}int* sortedSquares(原创 2021-07-09 11:29:33 · 107 阅读 · 0 评论 -
leetcode278二分法笔记
leetcode刷题 278第一个错误版本你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次原创 2021-07-06 18:46:46 · 117 阅读 · 0 评论 -
leetcode二分法查找解题思路
leetcode每日一题练习题目:704 二分法查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。思路二分法查找是一种针对有序数组进行查找的方法,每次从中间进行切分,判断数组下标为中间的元素是否与目标值匹配,若匹配则输出,若目标值大于中间元素的值,则从后半部分进行划分,若小于则从前半部分进行划分,若查找完依旧不匹配则返回值-1;定义变量 :begin=0,end=nums原创 2021-07-06 17:47:36 · 101 阅读 · 0 评论