Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python解答力扣网站题库简单版---

Python解答力扣网站题库简单版---

作者头像
py3study
发布于 2020-01-16 07:16:51
发布于 2020-01-16 07:16:51
89600
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

1041. 困于环中的机器人

题库链接: 1041. 困于环中的机器人.

题干

在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。机器人可以接受下列三条指令之一:

  • "G":直走 1 个单位
  • "L":左转 90 度
  • "R":右转 90 度
  • 机器人按顺序执行指令 instructions,并一直重复它们。

只有在平面中存在环使得机器人永远无法离开时,返回 true。否则,返回 false。

示例

示例 1

输入:"GGLLGG" 输出:true 解释:机器人从 (0,0) 移动到 (0,2),转 180 度,然后回到 (0,0)。 重复这些指令,机器人将保持在以原点为中心,2 为半径的环中进行移动。

示例 2

输入:"GG" 输出:false 解释:机器人无限向北移动。

示例3

输入:"GL" 输出:true 解释: 机器人按 (0, 0) -> (0, 1) -> (-1, 1) -> (-1, 0) -> (0, 0) -> ... 进行移动。

提示

  • 1 <= instructions.length <= 100
  • instructions[i] 在 {'G', 'L', 'R'} 中

思路

  • 只要循环一次之后方向不是在向北或一次之后就在原点,
  • 那么循环四次或者四次之内之后就可以回到初始位置
  • 使用两个变量记录点的位置,使用两个变量记录机器人的方向。
  • 遍历指令,如果为‘L’, 执行dx, dy = -dy, dx(横坐标为纵坐标的相反数,纵坐标为横坐标),如果为‘R’,执行dx, dy = dy, -dx(横坐标为纵坐标,纵坐标为横坐标的相反数)。
  • 最后只要方向不向北或已经在原点机器人就可以离开。

代码解析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution(object):
    def isBoomerang(self, points):
        """
        :type points: List[List[int]]
        :rtype: bool
        """

        A,B,C=points
        return (A[0]-B[0])*(B[1]-C[1])-(A[1]-B[1])*(B[0]-C[0])!=0

运行结果

237. 删除链表中的节点

题库链接: 237. 删除链表中的节点.

题干

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。

现有一个链表 -- head = [4,5,1,9],它可以表示为:

示例

示例 1

输入: head = [4,5,1,9], node = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

示例 2

输入: head = [4,5,1,9], node = 1 输出: [4,5,9] 解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9 .

说明

  • 链表至少包含两个节点。
  • 链表中所有节点的值都是唯一的。
  • 给定的节点为非末尾节点并且一定是链表中的一个有效节点。
  • 不要从你的函数中返回任何结果。

思路:

  • 使本节点为删除节点的下一个点,删除节点的下一个点为删除节点的下下一个节点。

代码解析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def deleteNode(self, node):
        """
        :type node: ListNode
        :rtype: void Do not return anything, modify node in-place instead.
        """
        node.val, node.next = node.next.val, node.next.next

运行结果

1. 两数之和

题库链接: 1. 两数之和.

题干

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

解法1

思路:

  • 暴力破解,遍历每一个元素,并查找是否存在两个数和为target

代码解析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        for i in range(len(nums)):
            for k in range(i + 1, len(nums)):
                if nums[i] + nums[k] == target:
                    return [i, k]
                    break

运行结果

当然解法一是非常暴力的会消耗很长时间和内存空间,接下来介绍一个更好的解法。

解法2

  • 使用一个字典记录list里面的值和索引,遍历list,如果target-num在字典里面返回两个索引值,否则返回None

代码解析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hashmap = {}
        for index, num in enumerate(nums):
            another_num = target - num
            if another_num in hashmap:
                return [hashmap[another_num], index]
            hashmap[num] = index
        return None

结尾

  • 鸡汤:人的一生,既不是想象中的那么好,也不是想象中的那么坏。每个人的背后都会有心酸,都会有无法言说的艰难。每个人都会有自己的泪要擦,都会有自己的路要走。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/06/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
精选 TOP 面试题 001 | LeetCode 237. 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
江不知
2019/12/12
3720
精选 TOP 面试题 001 | LeetCode 237. 删除链表中的节点
小白刷力扣之两数之和
作为一个半路出家的算法小白,最近尝试着刷一下力扣,来扩展些思维,毕竟总是写一些复杂度非常高的代码也不是那么回事。
周萝卜
2020/05/22
7970
LeetCode算法题(一)
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
万能青年
2019/08/30
3410
LeetCode-剑指offer
首刷剑指offer,刷起来还是比较吃力,大多数题需要看题解才能做出来,甚至有的看了题解都不懂😭,我是废物,希望第二次刷的时候大部分题都能自己做出来吧!!! 剑指Offer 简单 中等 困难 38道 31道 6道 第 1 天 栈与队列 09. 用两个栈实现队列 题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1: 输入
小简
2023/01/30
1.3K0
一样的道理,能解决四数之和
题意:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。
代码随想录
2021/06/16
4090
打卡群2刷题总结1006—— 删除链表的倒数第N个节点
https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/
木又AI帮
2020/10/10
4280
刷穿力扣(1~30)
浪漫主义狗
2023/10/08
3730
阿里巴巴的算法面试题JAVA,python,go,rust ,js,C++,Swift,Kotlin,Scala解法大全
算法思路相同,都是使用dummy节点和cur指针,两两交换链表节点,并返回dummy.next作为结果。
疯狂的KK
2023/05/16
1K0
阿里巴巴的算法面试题JAVA,python,go,rust ,js,C++,Swift,Kotlin,Scala解法大全
leetcode题目之1、2---两数相加
最近心血来潮刷leetcode,准备给弄个leetcode专题,先搞了两道简单的,提交了好多次才通过的,记录一下。
AsiaYe
2020/10/10
2980
【LeetCode题解---1】Two Sum
“Bad programmers worry about the code. Good programmers worry about data structures and their relationships.”
周三不加班
2019/09/04
3560
【LeetCode题解---1】Two Sum
LeetCode 算法题
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
用户9615083
2022/12/25
3410
LeetCode 算法题
数据结构与算法思想
分治法是基于多项分支递归的一种很重要的算法范式。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
知一
2021/12/07
4370
数据结构与算法思想
前端面试会遇到的 LeetCode 简单题!
大家好,我是山月,今天分享一篇文章,关于前端面试题目中的算法题目。这篇文章的作者是成都的孟祥同学。
山月
2021/08/10
8230
前端面试会遇到的 LeetCode 简单题!
面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代码」之 二分 + 哈希表 + 堆 + 优先队列 部分!
本文将覆盖 二分 + 哈希表 + 堆 + 优先队列 方面的面试算法题,文中我将给出:
圆号本昊
2021/09/24
4060
面试必备:高频算法题汇总「图文解析 + 教学视频 + 范例代码」之 二分 + 哈希表 + 堆 + 优先队列 部分!
力扣每日一刷(2023.10.2)
输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5] 示例 2: 输入:head = [], val = 1 输出:[] 示例 3: 输入:head = [7,7,7,7], val = 7 输出:[] 提示:
用户11097514
2024/05/31
920
力扣每日一刷(2023.10.2)
【2025-02-28】基础算法:前后指针
📝前言说明: ●本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,主要跟随B站博主灵茶山的视频进行学习,专栏中的每一篇文章对应B站博主灵茶山的一个视频 ●题目主要为B站视频内涉及的题目以及B站视频中提到的“课后作业”。 ●文章中的理解仅为个人理解。 ●文章中的截图来源于B站博主灵茶山,如有侵权请告知。
用户11029137
2025/03/01
830
【2025-02-28】基础算法:前后指针
二叉树的右视图 python_【Python数据结构5】Binary Search Tree
return [] if (root is None) else self.InOrder(root.left) + [root.val] + self.InOrder(root.right)
Java架构师必看
2021/08/23
2440
Leetcode模块训练2
1. 两数之和(1)# 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2
素履coder
2022/11/16
3380
【DAY29】LeetCode力扣算法题 [817. 链表组件 ]
输入: head = [0,1,2,3], nums = [0,1,3] 输出: 2 解释: 链表中,0 和 1 是相连接的,且 nums 中不包含 2,所以 [0, 1] 是 nums 的一个组件,同理 [3] 也是一个组件,故返回 2。 / 示例 2:
.29.
2022/11/15
1770
【DAY29】LeetCode力扣算法题 [817. 链表组件 ]
刷穿力扣(31~60)
浪漫主义狗
2023/10/31
4000
刷穿力扣(31~60)
相关推荐
精选 TOP 面试题 001 | LeetCode 237. 删除链表中的节点
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档