1. 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
int removeDuplicates(int* nums, int numsSize){
int slow,fast;
slow = 1;
fast = 1;
while(fast < numsSize){
if(nums[fast] != nums[fast-1]){
nums[slow] = nums[fast];
slow++;
}
fast++;
}
return slow;
}
2. 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
int removeElement(int* nums, int numsSize, int val){
int i,j;
i=j=0;
while(j<numsSize){
if(nums[j]!=val){
nums[i] = nums[j];
i++;
}
j++;
}
return i;
}
3. 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置
int searchInsert(int* nums, int numsSize, int target){
int i;
for(i=0;i<numsSize;i++){
if(nums[i]>=target)
break;
}
return i;
}
4. 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
int maxSubArray(int* nums, int numsSize){
int max,premax,i;
max = premax = nums[i];
for(i=1;i<numsSize;i++){
premax = premax+nums[i]>nums[i]?premax+nums[i]:nums[i];
max = max>premax?max:premax;
}
return max;
}
5. 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度
int lengthOfLastWord(char * s){
int i = strlen(s)-1;
int len = 0;
while(i>=0 && s[i] == ' '){
i--;
}
while(i>=0 && s[i] != ' '){
len++;
i--;
}
return len;
}