LeetCode 题目-69/70/83 (python实现)

作为要准备踏入码农行业的人来说,要准备校招,怎么能不去刷刷LeetCode呢?

69. X的平方根

  • 题目要求:
    实现 int sqrt(int x) 函数。
    计算并返回 x 的平方根,其中 x 是非负整数。
    由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

  • 示例:

输入: 4
输出: 2

输入: 8
输出: 2
说明: 8 的平方根是 2.82842..., 
由于返回类型是整数,小数部分将被舍去。
  • 分析:
    方法一:利用库函数求解
class Solution:
    def mySqrt(self, x):
        return x**0.5

方法二:使用二分法

   def mysqrrt(self,x):
        low = 0
        high = x
        ans = 0
        while low<=high:
            mid = (low+high)//2
            if (mid*mid<=x):
                ans =mid
                low =mid+1
            else:
                high =mid-1
        return ans

70. 爬楼梯

  • 题目要求:
    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
    每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
    注意:给定 n 是一个正整数。

  • 示例:

输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1.  1 阶 + 1 阶
2.  2 阶

输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1.  1 阶 + 1 阶 + 1 阶
2.  1 阶 + 2 阶
3.  2 阶 + 1 阶
  • 分析:
    动态规划:n个台阶,一开始可以爬 1 步,也可以爬 2 步,那么n个台阶爬楼的爬楼方法就等于 一开始爬1步的方法数 + 一开始爬2步的方法数,这样我们就只需要计算n-1个台阶的方法数
    和n-2个台阶方法数,同理,计算n-1个台阶的方法数只需要计算一下n-2个台阶和n-3个台阶,计算n-2个台阶需要计算一下n-3个台阶和n-4个台阶……
class Solution:
    def climbStairs(self, n):
        if n==1:
            return 1
        sum=[0]*(n+1)
        sum[1]=1
        sum[2]=2
        i =3
        while(i<=n):
            sum[i]=sum[i-2]+sum[i-1]
            i=i+1
        return sum[n]

83. 删除排序链表中的重复元素

  • 题目要求:
    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

  • 示例:

输入: 1->1->2
输出: 1->2

输入: 1->1->2->3->3
输出: 1->2->3
  • 分析:
    由于题目已经给定了是排序的链表,所以只要比较前后的值是否相等即可
class Solution:
    def deleteDuplicates(self, head):
        current =head
        while(current and current.next):
            if current.next.val ==current.val:
                current.next=current.next.next
            else:
                current=current.next
        return head

猜你喜欢

转载自blog.csdn.net/qq_39884947/article/details/85917298
今日推荐