26.删除有序数组中的重复项 (与27.移除元素核心一样)
int removeDuplicates(int* nums, int numsSize)
{
if (numsSize == 0)
{
return 0;
}
int fast = 1, slow = 1;//快慢双指针法
//注意fast,slow都从1开始,因为与前一个相比
while (fast < numsSize)
{
if (nums[fast] != nums[fast - 1])
{
nums[slow] = nums[fast];//slow负责存放不重复的fast值
slow++;
}
fast++;
}
return slow;
}
27.移除元素
int removeElement(int* nums, int numsSize, int val)
{
int left = 0;
int right = 0;
for (left = 0, right = 0;right < numsSize;right++)//从0开始,一个一个遍历
{
if (nums[right] != val)
{
nums[left] = nums[right];//left负责存放不重复的right值
left++;
}
}
return left;
}
125.验证回文串(回文数,回文串一定要懂!)
bool isPalindrome(char* s)
{
if (s == NULL)
{
return false;
}
int left = 0;
int right = strlen(s) - 1;
while (left < right)
{
while (left < right && (!isalnum(s[left])))//isalnum 判断是否为数字
{
left++;
}
while (left < right && (!isalnum(s[right])))
{
right--;
}
if (left < right)
{
if (tolower(s[left]) != tolower(s[right]))
{
return false;
}
}
left++;
right--;
}
return true;
}
169.多数元素
int majorityElement(int* nums, int numsSize)
{
int count = 1;//注意从count是1开始
int ret = nums[0];
for (int i = 1;i < numsSize;i++)
{
if (ret == nums[i])
{
count++;
}
else
{
count--;
}
if (count == 0)
{
ret = nums[i + 1];//则开始下一个数,再次遍历,题目说必定存在!,所以可以一个一个遍历
}
}
return ret;
}
👏 这次的力扣题比较简单,可以举一反三哈!!!
继续加油刷题,必须!!!
👊👊👊