自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode打卡80

给定两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。示例 1:输入: nums1 = [4,1,2], nums2 = [1,3,4,2].输出: [-1,3,-1]解释:对于num1中的数字4,你无法在第二个数组中找到下一个更大的数字,因此

2020-09-08 13:45:44 116

原创 LeetCode打卡79

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2代码:int majorityElement(int* nums, int numsSize){int i,j,s;for(i=numsSize-1;i>=0;i--){ s=0; for(j=0;j&l

2020-09-07 20:10:12 79

原创 LeetCode打卡78

给你一个整数 n,请你返回 任意 一个由 n 个 各不相同 的整数组成的数组,并且这 n 个数相加和为 0 。示例 1:输入:n = 5输出:[-7,-1,1,3,4]解释:这些数组也是正确的 [-5,-1,1,2,3],[-3,-1,2,-2,4]。示例 2:输入:n = 3输出:[-1,0,1]示例 3:输入:n = 1输出:[0]代码:/** * Note: The returned array must be malloced, assume caller calls fr

2020-09-06 19:49:31 75

原创 LeetCode打卡77

给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本。所谓无效化 IP 地址,其实就是用 “[.]” 代替了每个 “.”。示例 1:输入:address = “1.1.1.1”输出:“1[.]1[.]1[.]1”示例 2:输入:address = “255.100.50.0”输出:“255[.]100[.]50[.]0”代码:char * defangIPaddr(char * address){int i,j=0,k;char *res=(char*)ma

2020-09-02 20:14:25 53

原创 LeetCode打卡76

给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。请你返回字符串的能量。示例 1:输入:s = “leetcode”输出:2解释:子字符串 “ee” 长度为 2 ,只包含字符 ‘e’ 。示例 2:输入:s = “abbcccddddeeeeedcba”输出:5解释:子字符串 “eeeee” 长度为 5 ,只包含字符 ‘e’ 。示例 3:输入:s = “triplepillooooow”输出:5示例 4:输入:s = “hooraaaaaaaaa

2020-09-02 19:57:34 132

原创 LeetCode打卡75

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶代码:int climbStairs(int n){int i=1,j=2,k,s;if(n<=3)

2020-09-02 19:50:27 53

原创 LeetCode打卡74

给你一个数字数组 arr 。如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。如果可以重新排列数组形成等差数列,请返回 true ;否则,返回 false 。示例 1:输入:arr = [3,5,1]输出:true解释:对数组重新排序得到 [1,3,5] 或者 [5,3,1] ,任意相邻两项的差分别为 2 或 -2 ,可以形成等差数列。示例 2:输入:arr = [1,2,4]输出:false解释:无法通过重新排序得到等差数列。代码:bool canM

2020-08-31 19:56:04 67

原创 LeetCode打卡73

给定一个正整数 N,找到并返回 N 的二进制表示中两个相邻 1 之间的最长距离。如果没有两个相邻的 1,返回 0 。示例 1:输入:22输出:2解释:22 的二进制是 0b10110 。在 22 的二进制表示中,有三个 1,组成两对相邻的 1 。第一对相邻的 1 中,两个 1 之间的距离为 2 。第二对相邻的 1 中,两个 1 之间的距离为 1 。答案取两个距离之中最大的,也就是 2 。示例 2:输入:5输出:2解释:5 的二进制是 0b101 。示例 3:输入:6输出:

2020-08-28 16:04:53 71

原创 LeetCode打卡72

给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。示例 1:输入:salary = [4000,3000,1000,2000]输出:2500.00000解释:最低工资和最高工资分别是 1000 和 4000 。去掉最低工资和最高工资以后的平均工资是 (2000+3000)/2= 2500示例 2:输入:salary = [1000,2000,3000]输出:2000.00

2020-08-27 21:59:26 61

原创 LeetCode打卡71

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。示例 2:输入: [7

2020-08-26 20:52:40 48

原创 LeetCode打卡70

给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。示例 1:输入: 5输出: True解释:5的二进制数是: 101示例 2:输入: 7输出: False解释:7的二进制数是: 111示例 3:输入: 11输出: False解释:11的二进制数是: 1011示例 4:输入: 10输出: True解释:10的二进制数是: 1010代码:bool hasAlternatingBits(int n){while(n%2!=0

2020-08-25 21:07:11 59

原创 LeetCode打卡69

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例 1:输入:head = [1,0,1]输出:5解释:二进制数 (101) 转化为十进制数 (5)示例 2:输入:head = [0]输出:0示例 3:输入:head = [1]输出:1示例 4:输入:head = [1,0,0,1,0,0,1,1,1,0,0,0,0,0,0]输出:18880示例 5:输入:head

2020-08-24 18:24:24 57

原创 LeetCode打卡68

爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字 N 。在每个玩家的回合,玩家需要执行以下操作:选出任一 x,满足 0 < x < N 且 N % x == 0 。用 N - x 替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回 True,否则返回 False。假设两个玩家都以最佳状态参与游戏。示例 1:输入:2输出:true解释:爱丽丝选择 1,鲍勃无法进行操作。示例 2:输入:3输出:fa

2020-08-24 17:14:51 82

原创 LeetCode打卡67

给你一个非递减的 有序 整数数组,已知这个数组中恰好有一个整数,它的出现次数超过数组元素总数的 25%。请你找到并返回这个整数示例:输入:arr = [1,2,2,6,6,6,6,7,10]输出:6代码:int findSpecialInteger(int* arr, int arrSize){int i,j,k;for(i=0;i<arrSize;i++){ k=0; for(j=0;j<arrSize;j++) { if(arr[i]

2020-08-20 21:33:46 72

原创 LeetCode打卡66

给你一个数组 prices ,其中 prices[i] 是商店里第 i 件商品的价格。商店里正在进行促销活动,如果你要买第 i 件商品,那么你可以得到与 prices[j] 相等的折扣,其中 j 是满足 j > i 且 prices[j] <= prices[i] 的 最小下标 ,如果没有满足条件的 j ,你将没有任何折扣。请你返回一个数组,数组中第 i 个元素是折扣后你购买商品 i 最终需要支付的价格。示例 1:输入:prices = [8,4,6,2,3]输出:[4,2,4,2,3

2020-08-20 20:44:40 137

原创 LeetCode打卡65

数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5示例 2:输入:[3,2]输出:-1示例 3:输入:[2,2,1,1,1,2,2]输出:2代码:int majorityElement(int* nums, int numsSize){int i,j=numsSize-1,k,a;while(j>=0){ a=nums[j]; k=0; for(

2020-08-20 20:07:16 47

原创 LeetCode打卡64

给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。示例 1:输入:n = 4输出:“pppz”解释:“pppz” 是一个满足题目要求的字符串,因为 ‘p’ 出现 3 次,且 ‘z’ 出现 1 次。当然,还有很多其他字符串也满足题目要求,比如:“ohhh” 和 “love”。示例 2:输入:n = 2输出:“xy”解释:“xy” 是一个满足题目要求的字

2020-08-17 22:04:34 70

原创 LeetCode打卡63

给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。以数组形式返回答案。示例 1:输入:nums = [8,1,2,2,3]输出:[4,0,1,1,3]解释:对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。对于 nums[1]=1 不存在比它小的数字。对于 nums[2]=2 存

2020-08-17 21:46:29 75

原创 LeetCode打卡62

给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”输出: 3示例 2:输入: J = “z”, S = “ZZ”输出: 0代码:int numJewelsInStones(char * J, char * S){int i,j

2020-08-17 21:25:20 48

原创 LeetCode打卡61

给你一个仅由数字 6 和 9 组成的正整数 num。你最多只能翻转一位数字,将 6 变成 9,或者把 9 变成 6 。请返回你可以得到的最大数字。示例 1:输入:num = 9669输出:9969解释:改变第一位数字可以得到 6669 。改变第二位数字可以得到 9969 。改变第三位数字可以得到 9699 。改变第四位数字可以得到 9666 。其中最大的数字是 9969 。示例 2:输入:num = 9996输出:9999解释:将最后一位从 6 变到 9,其结果 9999 是最

2020-08-12 16:08:56 76

原创 LeetCode打卡60

给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 “balloon”(气球)。字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 “balloon”。示例 1:输入:text = “nlaebolko”输出:1示例 2:输入:text = “loonbalxballpoon”输出:2示例 3:输入:text = “leetcode”输出:0代码:int maxNumberOfBalloons(char * text){in

2020-08-12 15:46:19 53

原创 LeetCode打卡59

给你两个整数数组 startTime(开始时间)和 endTime(结束时间),并指定一个整数 queryTime 作为查询时间。已知,第 i 名学生在 startTime[i] 时开始写作业并于 endTime[i] 时完成作业。请返回在查询时间 queryTime 时正在做作业的学生人数。形式上,返回能够使 queryTime 处于区间 [startTime[i], endTime[i]](含)的学生人数。示例 1:输入:startTime = [1,2,3], endTime = [3,2,7

2020-08-12 15:04:46 78

原创 LeetCode打卡58

给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,3,9,6]输出:[2,2,2,1,4,3,3,9,6,7,19]代码:/** * Note: The returned

2020-08-11 17:18:11 47

原创 LeetCode打卡57

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2,3,0,4,2]

2020-08-11 14:54:16 42

原创 LeetCode打卡56

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]代码:vo

2020-08-11 14:28:36 46

原创 LeetCode打卡55

给你一个整数数组 A,请你给数组中的每个元素 A[i] 都加上一个任意数字 x (-K <= x <= K),从而得到一个新数组 B 。返回数组 B 的最大值和最小值之间可能存在的最小差值。示例 1:输入:A = [1], K = 0输出:0解释:B = [1]示例 2:输入:A = [0,10], K = 2输出:6解释:B = [2,8]示例 3:输入:A = [1,3,6], K = 3输出:0解释:B = [3,3,3] 或 B = [4,4,4]代码:in

2020-08-10 20:05:13 169

原创 LeetCode打卡54

编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。示例:输入: numbers = [1,2]输出: [2,1]代码:/** * Note: The returned array must be malloced, assume caller calls free(). */int* swapNumbers(int* numbers, int numbersSize, int* returnSize){int *res=(int*)malloc(sizeof

2020-08-09 23:18:33 37

原创 LeetCode打卡53

给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。示例 1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。示例 2:输入:arr = [1,2]输出:false示例 3:输入:arr = [-3,0,1,-3,1,1,1,-3,10,0]输出:true代码:bool unique

2020-08-08 20:49:02 47

原创 LeetCode打卡52

统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0代码:int search(int* nums, int numsSize, int target){int i,j=0;for(i=0;i<numsSize;i++){ if(nums[i]==target) j++;}return j

2020-08-07 20:04:54 51

原创 LeetCode打卡51

输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]代码:/** * Note: The returned array must be malloced, assume caller calls free(). */int* getLeastN

2020-08-06 20:53:18 46

原创 LeetCode打卡50

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。代码:** * Note: The returned array must be malloced, assume caller calls free(). */int* exchange(int* nums, int numsSize, int* returnSi

2020-08-05 20:26:49 65

原创 LeetCode打卡49

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2代码:int majorityElement(int* nums, int numsSize){int i;int a = nums[0];int cout = 0; for (i = 0; i < numsSize; i++){ if (a == nums[i])

2020-08-04 18:28:25 65

原创 LeetCode打卡48

一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 1:输入: [0,1,3]输出: 2示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8int missingNumber(int* nums, int numsSize){int i,j,k;for(i=0;i<=numsSize;i++){ k=0; for(j=0;j<n

2020-08-02 21:53:34 146

原创 LeetCode打卡47

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,3,2]输出: 3示例 2:输入: [0,1,0,1,0,1,99]输出: 99代码:int singleNumber(int* nums, int numsSize){int i,j,k=0;for(i=0;i<numsSize;i++){ k=0; for(

2020-08-02 21:09:09 43

原创 LeetCode打卡46

给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,…,xn,y1,y2,…,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,…,xn,yn] 格式重新排列,返回重排后的数组。示例 1:输入:nums = [2,5,1,3,4,7], n = 3输出:[2,3,5,4,1,7]解释:由于 x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 ,所以答案为 [2,3,5,4,1,7]示例 2:输入:nums = [1,2,3,4,4,3,2,1], n

2020-08-01 18:20:52 51

原创 LeetCode打卡45

给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。示例 1:输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。示例 2:输入:nums = [1,1,1,1,1]输出:[1,2,3,4,5]解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] 。示例

2020-07-31 21:54:31 42

原创 LeetCode打卡44

对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。给定一个 整数 n, 如果他是完美数,返回 True,否则返回 False示例:输入: 28输出: True解释: 28 = 1 + 2 + 4 + 7 + 14代码:bool checkPerfectNumber(int num){int i,s=1;if(num==1) return false;for(i=2;i<=sqrt(num);i++){ if(num%i==0)

2020-07-28 15:27:06 46

原创 LeetCode打卡43

给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false代码:bool isPowerOfThree(int n){if(n==0) return false;while(n%3==0){ n=n/3;}if(n==1) return true;else return false;}...

2020-07-28 15:00:12 36

原创 LeetCode打卡42

编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例 2:输入:00000000000000000000000010000000输出:1解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为

2020-07-27 11:25:51 41

原创 LeetCode打卡41

数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?注意:本题相对书上原题稍作改动示例 1:输入:[3,0,1]输出:2示例 2:输入:[9,6,4,2,3,5,7,0,1]输出:8代码:int missingNumber(int* nums, int numsSize){int i,j,k;for(i=0;i<=numsSize;i++){ k=0; for(j=0;j<numsSize;j+

2020-07-25 00:09:41 46

空空如也

空空如也

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

TA关注的人

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