当前位置: 首页 > article >正文

力扣刷题之旅:启程篇(二)

      力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。   

--点击进入刷题地址 


1.最后得到的余数

题目描述

        给定两个非空字符串 nums1 和 nums2,编写一个函数来实现将 nums2 不断整除以 nums1 并返回余数,直到余数为 0。返回最后得到的余数。

示例
给定 nums1 = "10", nums2 = "4"  
  
输出 0  
解释:4 ÷ 10 = 0 余 0
代码: 
def divide(nums1: str, nums2: str) -> int:  
    dividend = int(nums2)  # 被除数  
    divisor = int(nums1)  # 除数  
    remainder = dividend  # 余数初始为被除数  
    while remainder >= divisor:  # 当余数大于等于除数时,继续相除  
        temp = divisor  # 临时保存除数,以便更新被除数和余数  
        dividend = remainder  # 被除数更新为余数  
        remainder = dividend % temp  # 余数更新为被除数除以临时保存的除数的余数  
    return remainder  # 返回余数

小结:

  • 最后得到的余数:这道题考察了如何通过整除操作来计算两个数的余数。我们使用一个循环来不断更新被除数和余数,直到余数为0。

2.反转链表 

题目描述

给定一个链表,反转链表并返回新的头节点。

示例
输入:1->2->3->4->null  
输出:4->3->2->1->null
代码: 
class ListNode:  
    def __init__(self, val=0, next=None):  
        self.val = val  # 节点值  
        self.next = next  # 下一个节点指针  
          
def reverseList(head: ListNode) -> ListNode:  
    prev = None  # 用于保存上一个节点,初始值为 None 表示反转前的链表没有节点(空链表)  
    curr = head  # 当前节点指针,初始指向链表的头部(第一个节点)  
    while curr:  # 当当前节点不为空时,进行反转操作  
        next_node = curr.next  # 保存下一个节点,以便反转后连接链表  
        curr.next = prev  # 将当前节点的下一个节点指向上一个节点,实现反转操作  
        prev = curr  # 上一个节点更新为当前节点,准备处理下一个节点  
        curr = next_node  # 当前节点更新为下一个节点,继续处理下一个节点(直到链表结束)  
    return prev  # 返回反转后的链表的头部(最后一个节点)作为新的头节点(反转前是第一个节点)

小结:

  • 反转链表:这道题考察了如何通过修改链表的指针来反转链表。我们使用两个指针,一个指向当前节点,另一个保存上一个节点,通过修改指针关系实现链表反转。

 3.盛最多水的容器

题目描述: 

        给你 n 个非负整数 a1,a2,...,an,每个数代表一个坐标点 (i, ai)。在坐标内画 n 条垂直线,使得 i 垂直线的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴构成的容器可以容纳最多的水。 

解题思路:

        对于每个坐标点 i,计算以该点为顶点的矩形容器的面积 S = min(ai, a(n-i+1)) * i。其中 min(ai, a(n-i+1)) 表示容器的宽度,i 表示容器的长度。最后返回 S 的最大值即可。

代码实现:
def max_area(height):  
    max_area = 0  
    left = 0  
    right = len(height) - 1  
    while left < right:  
        area = min(height[left], height[right]) * (right - left)  
        if area > max_area:  
            max_area = area  
        if height[left] < height[right]:  
            left += 1  
        else:  
            right -= 1  
    return max_area

        在这个实现中,我们使用双指针来维护容器的左右边界。左指针指向数组的起始位置,右指针指向数组的末尾位置。我们计算以左右指针为边界的矩形容器的面积,则更新最大面积的值,最后返回最大面积即可。

 

原文地址:https://blog.csdn.net/2202_75568470/article/details/136017650
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/226819.html

相关文章:

  • Mac M1使用PD虚拟机运行win10弹出“内部版本已过期立即安装新的windows内部版本”
  • 短剧小程序开发:打造高效、便捷的娱乐体验
  • 好的问卷设计标准:确保数据质量与准确性的关键要素
  • 【Spring实战】33 Spring Boot3 集成 Nacos 配置中心
  • Flink容错机制
  • 2024/1/28CSS学习:基础认知;选择器;文本样式
  • Android ViewPager2 同屏显示左右item
  • Qt实现类似ToDesk顶层窗口 不规则按钮
  • 【Java程序设计】【C00207】基于(JavaWeb+SSM)的宠物领养管理系统(论文+PPT)
  • 前端面试题-JavaScriptl原型,原型链?有什么特点?(2024.2.2)
  • 题目: 有1234个数字, 组成多个互不相同且无重复数字的三位数? 都是多少?
  • 【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)
  • 代码随想录算法训练营第二十四天|● 理论基础 ● 77. 组合
  • oracle数据库慢查询SQL
  • 【Delphi】IDE 工具栏错乱恢复
  • 软件工程知识梳理0-概述
  • jQuery前段开发--星级评价和图形跟随指针移动
  • 【报错记录】mybatis映射对应的类没有无参构造引发的问题
  • NUXTJS安装始终报错无法正常运行问题解决
  • T113-Pro的buildroot添加gdisk ( GPT disks )出现gptfdisk needs a toolchain w/ C++的解决方法