力扣刷题第一天

2023.5.21

    菜鸡刷题第一天,从力扣简单题刷起。

一、回文数

判断回文数,如果是回文数返回true,否则返回false

https://leetcode.cn/problems/palindrome-number/

class Solution {
public:
    bool isPalindrome(int x) {
        //负数不是回文数,所以当x<0时,返回false。
        //除0外,以0结尾的数字皆不为回文数,例:10、50、100、550、2370。即x%10==0时,返回false
        //但是要注意添加0的条件:x!=0
        if(x < 0 || (x % 10 == 0 && x != 0) )
        {
            return false;
        }

        //x:12321、7447
        //若x为奇数位,除去中间部分将其分为两部分,即比较12与21
        //若为偶数位,比较左右两部分即可,即74与47
        
        int num = 0;//用于存放数字的右半部分
        while(x > num)
        {
            num = num * 10 + x % 10;
            x /= 10;//每次去掉一位,奇数位去掉中间位。偶数位则刚好左右部分各为两位
        }
        return x == num || x == num/10;
    }
};

解题思路:

1.暴力

回文数可通过翻转数字再与原本数字比较、转换成字符串等方式解决。

2.题解牛波一

(1)特殊情况

负数不为回文数、以0结尾的,除0外都不为回文数。

(2)基本情况

回文数判断中,位数是一个特殊指标,偶数位的回文数判断时可直接判断左右两部分,奇数位则需要屏蔽中间位来比较。

整体思路:

满足特殊情况时,返回false。

处于基本情况时,若为偶数,得到其右半部分的翻转数字到一个变量中,判断二者是否相等即可;若为奇数,在最终比较时需将其中间位置除去。

空间复杂度:O(1)

时间复杂度:O(logN)//以10为底

感受:

答案题解巧夺天工.......解决问题前多考虑考虑,不要上来就暴力。

再引用一句评论:简单的题效率完全比不上题解,复杂的题完全不会(ㄒoㄒ)

二、移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。要求空间复杂度为O(1)

https://leetcode.cn/problems/remove-element/

int removeElement(vector& nums, int val) 
{
    int left = 0;
    int right = nums.size();
    while(left < right)
    {
        if(nums[left] == val)
        {
            nums[left] = nums[right-1];
            --right;
        }
        else
        {
            ++left;
        }
    }
    return left;
}

空间复杂度:

时间复杂度:

解题思路:

左右双指针。

right指向数组的最后一位,当左指针等于val(需要删除的值)时, 将right所指替换给左指针所指,右指针左移,最终返回left

三、搜索插入位置

https://leetcode.cn/problems/search-insert-position/

二分查找

要求:时间复杂度为 O(logn)

int searchInsert(vector& nums, int target) {
    int left = 0;
    int right = nums.size() - 1;
    while(left <= right)
    {
        int mid = (left + right) / 2;
        if(nums[mid] < target)
        {
            left = mid + 1;
        }
        else
        {
            right = mid - 1;
        }
    }
    return left;   
}

你可能感兴趣的:(leetcode,leetcode)