459.重复的子字符串
给定一个非空的字符串 s
,检查是否可以通过由它的一个子串重复多次构成。
示例 1:
输入: s = "abab" 输出: true 解释: 可由子串 "ab" 重复两次构成。
示例 2:
输入: s = "aba" 输出: false
示例 3:
输入: s = "abcabcabcabc" 输出: true 解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc" 重复两次构成。)
提示:
1 <= s.length <= 104
s
由小写英文字母组成
答案如下:
bool repeatedSubstringPattern(char* s) {
int n=strlen(s);
char k[2*n+1];
k[0]=0;
strcat(k,s);
strcat(k,s);
return strstr(k+1,s)-k!=n;
}
283.移动零
给定一个数组 nums
,编写一个函数将所有 0
移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。
示例 1:
输入: nums =[0,1,0,3,12]
输出:[1,3,12,0,0]
示例 2:
输入: nums =[0]
输出:[0]
提示:
1 <= nums.length <= 104
-231 <= nums[i] <= 231 - 1
答案如下:
void moveZeroes(int* nums, int numsSize) {
int j=0;
for(int i=0;i<numsSize;i++){
if(nums[i]!=0){
nums[j]=nums[i];
j++;
}
}
while(j<numsSize){
nums[j]=0;
j++;
}
}
1822.数组元素积的符号
已知函数 signFunc(x)
将会根据 x
的正负返回特定值:
- 如果
x
是正数,返回1
。 - 如果
x
是负数,返回-1
。 - 如果
x
是等于0
,返回0
。
给你一个整数数组 nums
。令 product
为数组 nums
中所有元素值的乘积。
返回 signFunc(product)
。
示例 1:
输入:nums = [-1,-2,-3,-4,3,2,1] 输出:1 解释:数组中所有值的乘积是 144 ,且 signFunc(144) = 1
示例 2:
输入:nums = [1,5,0,2,-3] 输出:0 解释:数组中所有值的乘积是 0 ,且 signFunc(0) = 0
示例 3:
输入:nums = [-1,1,-1,1,-1] 输出:-1 解释:数组中所有值的乘积是 -1 ,且 signFunc(-1) = -1
提示:
1 <= nums.length <= 1000
-100 <= nums[i] <= 100
答案如下:
int arraySign(int* nums, int numsSize) {
int a=0;
for(int i=0;i<numsSize;i++){
if(nums[i]==0)
{ return 0;break;}
if(nums[i]<0){++a;}
}
if(a%2==0) return 1;
else return -1;
}
1502.判断能否形成等差数列
给你一个数字数组 arr
。
如果一个数列中,任意相邻两项的差总等于同一个常数,那么这个数列就称为 等差数列 。
如果可以重新排列数组形成等差数列,请返回 true
;否则,返回 false
。
示例 1:
输入:arr = [3,5,1] 输出:true 解释:对数组重新排序得到 [1,3,5] 或者 [5,3,1] ,任意相邻两项的差分别为 2 或 -2 ,可以形成等差数列。
示例 2:
输入:arr = [1,2,4] 输出:false 解释:无法通过重新排序得到等差数列。
提示:
2 <= arr.length <= 1000
-10^6 <= arr[i] <= 10^6
答案如下:
int cmp (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
bool canMakeArithmeticProgression(int* arr, int arrSize) {
qsort(arr,arrSize,sizeof(int),cmp);
bool flag=true;
int x=arr[1]-arr[0];
for(int i=2;i<arrSize;i++)
{
if(arr[i]-arr[i-1]!=x)
{flag=false;}
}
return flag;
}
896.单调数列
如果数组是单调递增或单调递减的,那么它是 单调 的。
如果对于所有 i <= j
,nums[i] <= nums[j]
,那么数组 nums
是单调递增的。 如果对于所有 i <= j
,nums[i]> = nums[j]
,那么数组 nums
是单调递减的。
当给定的数组 nums
是单调数组时返回 true
,否则返回 false
。
示例 1:
输入:nums = [1,2,2,3] 输出:true
示例 2:
输入:nums = [6,5,4,4] 输出:true
示例 3:
输入:nums = [1,3,2] 输出:false
提示:
1 <= nums.length <= 105
-105 <= nums[i] <= 105
bool isMonotonic(int* nums, int numsSize) {
bool increasing = true;
bool decreasing = true;
for (int i = 1; i < numsSize; i++) {
if (nums[i] > nums[i - 1]) {
decreasing = false;
} else if (nums[i] < nums[i - 1]) {
increasing = false;
}
}
return increasing || decreasing;
}
标签:459,896,nums,int,Leetcoede,示例,数组,true,输入 From: https://blog.csdn.net/Blusher1/article/details/140576507