python制作题库网站_Python解答力扣网站题库简单版!
1041. 困于環中的機器人
題庫鏈接: 1041. 困于環中的機器人 .
題干
在無限的平面上,機器人最初位于 (0, 0) 處,面朝北方。機器人可以接受下列三條指令之一:
"G":直走 1 個單位
"L":左轉 90 度
"R":右轉 90 度
機器人按順序執行指令 instructions,并一直重復它們。
只有在平面中存在環使得機器人永遠無法離開時,返回 true。否則,返回 false。
示例
Python學習交流群:1004391443,這里有資源共享,技術解答,還有小編從最基礎的Python資料到項目實戰的學習資料都有整理,希望能幫助你更了解python,學習python。
示例 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(橫坐標為縱坐標,縱坐標為橫坐標的相反數)。
最后只要方向不向北或已經在原點機器人就可以離開。
代碼解析
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 .
說明
鏈表至少包含兩個節點。
鏈表中所有節點的值都是唯一的。
給定的節點為非末尾節點并且一定是鏈表中的一個有效節點。
不要從你的函數中返回任何結果。
思路:
使本節點為刪除節點的下一個點,刪除節點的下一個點為刪除節點的下下一個節點。
代碼解析
# 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
代碼解析
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
代碼解析
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
結尾
雞湯:人的一生,既不是想象中的那么好,也不是想象中的那么壞。每個人的背后都會有心酸,都會有無法言說的艱難。每個人都會有自己的淚要擦,都會有自己的路要走。
標簽:node,鏈表,target,nums,Python,機器人,力扣,題庫,節點
總結
以上是生活随笔為你收集整理的python制作题库网站_Python解答力扣网站题库简单版!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序运行依赖的重要文件版本不对_Deno
- 下一篇: python删除链表满足pred的元素_