leetcode简单题

  1. 整数反转
    def reverse(self, x: int) -> int:
        if str(x)[0] == '-':
            if int('-'+str(x)[1:][::-1]) > -2147483648:
                return int('-'+str(x)[1:][::-1])
            else:
                return 0
        else:
            if int(str(x)[::-1]) < 2147483648:
                return int(str(x)[::-1])
            else:
                return 0
  1. 回文数
    def isPalindrome(self, x: int) -> bool:
        if str(x)[0] == '-':
            return False
        else:
            if x == int(str(x)[::-1]):
                return True
            else:
                return False 
  1. 罗马数字转整数
    def romanToInt(self, s: str) -> int:
        q={'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
        a=[]
        b=0
        for i in s:
            a.append(q[i])
        for i in range(len(a)):
            if i < len(a)-1 and a[i] < a[i+1]:
                b = b - a[i]
            else:
                b = b + a[i]
        return b
  1. 最长公共前缀
    def longestCommonPrefix(self, strs: List[str]) -> str:
        if len(set(strs)) > 1:
            b = 0
            while 1:
                a = []
                for i in strs:
                    a.append(i[:b])
                if len(set(a)) == 1 and b < len(max([i for i in strs])):
                    b += 1
                else:
                    return a[0][:b - 1]
        else:
            if len(strs):
                return  strs[0]
            else:
                return ''
  1. 有效的括号
  def isValid(self, s: str) -> bool:
      stack = []
      lookup = {
          "(": ")",
          "[": "]",
          "{": "}"
      }
      for alp in s:
          if alp in lookup:
              stack.append(alp)
              continue
          if stack and lookup[stack[-1]] == alp:
              stack.pop()
          else:
              return False
      return True if not stack else False
  1. 合并两个有序链表
    def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
        if not l1: return l2
        if not l2: return l1
        if l1.val < l2.val:
            l1.next = self.mergeTwoLists(l1.next,l2)
            return l1
        else:
            l2.next = self.mergeTwoLists(l1,l2.next)
            return l2 
  1. 删除排序数组中的重复项
  def removeDuplicates(self, nums: List[int]) -> int:
      q = []
      for j in nums:
          if j in q:
              continue
          else:
              q.append(j)
      for i, j in enumerate(q):
          nums[i] = j
      return len(q)
  1. 移除元素
    def removeElement(self, nums: List[int], val: int) -> int:
        #if len(nums)>2:
        while 1:
            if val in nums:
                nums.remove(val)
            else:
                break
        #else:
            #if nums[0] == val:
                #return 0
        return len(nums)
  1. 实现 strStr()
    def strStr(self, haystack: str, needle: str) -> int:
        if haystack == '' and needle == '':
            return 0
        elif needle == '':
            return 0
        else:
            if needle in haystack:
                return haystack.index(needle)
            else:
                return -1
  1. 搜索插入位置
    def searchInsert(self, nums: List[int], target: int) -> int:
        if target in nums:
            return nums.index(target)
        else:
            a=0
            while 1:
                if nums[a] > target:
                    return a
                elif a < len(nums)-1 :
                    a += 1
                else:
                    return len(nums)
  1. 最大子序和
    def maxSubArray(self, nums: List[int]) -> int:
        for i in range(1, len(nums)):
            nums[i] = max(nums[i-1]+nums[i], nums[i])
        return max(nums)
  1. 最后一个单词的长度
class Solution:
    def lengthOfLastWord(self, s: str) -> int:
        s = s.lstrip()
        if len(s) == 0:
            return 0
        return len(s.split()[-1])
  1. 加一
    def plusOne(self, digits: List[int]) -> List[int]:
        lenght = len(digits)
        new = digits[lenght-1] + 1
        i = 1
        while True:
            if new == 10 :
                digits[lenght-i] = 0
                i += 1
                if i <= lenght:
                    new = digits[lenght-i] + 1
                else:
                    digits.insert(0,1)
                    break
            else:
                digits[lenght - i] = new
                break
        return digits
  1. 二进制求和
    def addBinary(self, a: str, b: str) -> str:
        a, b = int(a, 2), int(b, 2)
        ans = bin(a + b)
        ans = str(ans)
        ans = ans[2:]
        return ans
  1. x 的平方根
class Solution:
    def mySqrt(self, x: int) -> int:
        a = math.sqrt(x)
        return int(a//1)
  1. 爬楼梯
    a = {}
    def inner(self,x):
        print(a)
        if x in a.keys():
            return a[x]
        a[x] = fun(self,x)
        return fun(self,x)
    return inner

class Solution:
    @warpe
    def climbStairs(self, x: int) -> int:
        if x <= 2:
            return x
        return self.climbStairs(x-1) + self.climbStairs(x-2)
  1. 删除排序链表中的重复元素
    def deleteDuplicates(self, head: ListNode) -> ListNode:
        if head is None or head.next is None:
            return head
        child = self.deleteDuplicates(head.next)
        if child and head.val == child.val:
            head.next = child.next
            child.next = None
        return head
  1. 合并两个有序数组
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
        """
        Do not return anything, modify nums1 in-place instead.
        """
        for i, j in enumerate(nums2):
            nums1[i+m] = j
        nums1.sort()
        return nums1
        
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问
### 回答1: LeetCode是一个优秀的在线编程平台,提供了丰富的算法和数据结构目供程序员练习。其中的简单大多可以用Python语言编写,下面为您提供几个常见目的Python版本答案。 1. 两数之和(Two Sum) 目描述:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 Python版本答案: class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: d = {} for i, x in enumerate(nums): if target - x in d: return [d[target - x], i] d[x] = i 2. 反转字符串(Reverse String) 目描述:编写一个函数,其作用是将输入的字符串反转过来。 Python版本答案: class Solution: def reverseString(self, s: List[str]) -> None: """ Do not return anything, modify s in-place instead. """ left, right = 0, len(s) - 1 while left < right: s[left], s[right] = s[right], s[left] left += 1 right -= 1 3. 回文数字(Palindrome Number) 目描述:判断一个整数是否是回文数,例如:121是回文数,-121不是回文数。 Python版本答案: class Solution: def isPalindrome(self, x: int) -> bool: if x < 0: return False if x == 0: return True str_x = str(x) left, right = 0, len(str_x) - 1 while left < right: if str_x[left] != str_x[right]: return False left += 1 right -= 1 return True 以上只是这几个简单目的Python版本答案,实际上LeetCode上还有很多其他编程语言编写的优秀答案,需要程序员们自己去探索和实践。 ### 回答2: Leetcode是一个流行的在线编程库,提供了许多关于算法和数据结构的目,难度从简单到困难不等。Python是一种易学易用的编程语言,备受程序员欢迎。因此,许多程序员使用Python来解决Leetcode的编程问。下面我将提供一些Python版本的Leetcode简单的答案。 1. 两数之和 目描述:给定一个整数数组和一个目标值,在数组中找到两个数之和等于目标值。 解思路:使用哈希表来存储数组中每个元素的值和索引,然后遍历每个元素时,查找目标值减去当前元素的值是否在哈希表中,如果存在,返回两个值的索引。 Python代码: def twoSum(nums, target): hash_table = {} for i, num in enumerate(nums): complement = target - num if complement in hash_table: return hash_table[complement], i hash_table[num] = i nums = [2, 7, 11, 15] target = 9 print(twoSum(nums, target)) # Output: (0, 1) 2. 路径总和 目描述:给定一棵二叉树和一个目标值,判断是否存在从根节点到叶节点的路径,使得路径上所有节点的值相加等于目标值。 解思路:遍历二叉树的所有路径,判断路径上所有节点的值相加是否等于目标值。 Python代码: class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def hasPathSum(root, sum): if not root: return False if not root.left and not root.right and root.val == sum: return True return hasPathSum(root.left, sum - root.val) or hasPathSum(root.right, sum - root.val) root = TreeNode(5) root.left = TreeNode(4) root.right = TreeNode(8) root.left.left = TreeNode(11) root.left.left.left = TreeNode(7) root.left.left.right = TreeNode(2) root.right.left = TreeNode(13) root.right.right = TreeNode(4) root.right.right.right = TreeNode(1) sum = 22 print(hasPathSum(root, sum)) # Output: True 3. 最大子序和 目描述:给定一个整数数组,找到一个具有最大和的子数组,返回该子数组的和。 解思路:使用动态规划,定义状态dp[i]表示以第i个数结尾的最大子数组和,则状态转移方程为dp[i] = max(dp[i-1] + nums[i], nums[i])。 Python代码: def maxSubArray(nums): if not nums: return 0 n = len(nums) dp = [0] * n dp[0] = nums[0] for i in range(1, n): dp[i] = max(dp[i-1] + nums[i], nums[i]) return max(dp) nums = [-2,1,-3,4,-1,2,1,-5,4] print(maxSubArray(nums)) # Output: 6 总结:以上是三个Python版本的Leetcode简单的答案,它们涉及到哈希表、二叉树、动态规划等算法和数据结构。这些目既考验了程序员的基本功,又是训练算法思维的好工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值