Merge branch 'main' of https://git.mamahaha.work/sangge/OlympiadCode
This commit is contained in:
commit
c4ddb1d696
28
leetcode/27.py
Normal file
28
leetcode/27.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
from typing import List
|
||||||
|
'''
|
||||||
|
Given an integer array nums and an integer val, remove all occurrences of val in nums in-place.
|
||||||
|
The order of the elements may be changed.
|
||||||
|
Then return the number of elements in nums which are not equal to val.
|
||||||
|
|
||||||
|
Consider the number of elements in nums which are not equal to val be k,
|
||||||
|
to get accepted, you need to do the following things:
|
||||||
|
|
||||||
|
Change the array nums such that the first k elements of nums
|
||||||
|
contain the elements which are not equal to val.
|
||||||
|
The remaining elements of nums are not important as well as the size of nums.
|
||||||
|
|
||||||
|
Return k.
|
||||||
|
Constraints:
|
||||||
|
|
||||||
|
0 <= nums.length <= 100
|
||||||
|
0 <= nums[i] <= 50
|
||||||
|
0 <= val <= 100
|
||||||
|
'''
|
||||||
|
class Solution:
|
||||||
|
def removeElement(self, nums: List[int], val: int) -> int:
|
||||||
|
k = len(nums)
|
||||||
|
while val in nums:
|
||||||
|
nums.remove(val)
|
||||||
|
k = k - 1
|
||||||
|
return k
|
||||||
|
|
12
leetcode/28.py
Normal file
12
leetcode/28.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
"""
|
||||||
|
Given two strings needle and haystack,
|
||||||
|
return the index of the first occurrence of needle in haystack,
|
||||||
|
or -1 if needle is not part of haystack.
|
||||||
|
"""
|
||||||
|
class Solution:
|
||||||
|
def strStr(self, haystack: str, needle: str) -> int:
|
||||||
|
if needle in haystack:
|
||||||
|
return haystack.find(needle)
|
||||||
|
else:
|
||||||
|
return -1
|
||||||
|
|
31
leetcode/35.py
Normal file
31
leetcode/35.py
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
"""
|
||||||
|
Given a sorted array of distinct integers and a target value,
|
||||||
|
return the index if the target is found.
|
||||||
|
If not, return the index where it would be if it were inserted in order.
|
||||||
|
|
||||||
|
You must write an algorithm with O(log n) runtime complexity.
|
||||||
|
|
||||||
|
Constraints:
|
||||||
|
|
||||||
|
1 <= nums.length <= 10^4
|
||||||
|
-10^4 <= nums[i] <= 10^4
|
||||||
|
nums contains distinct values sorted in ascending order.
|
||||||
|
-10^4 <= target <= 10^4
|
||||||
|
"""
|
||||||
|
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
|
||||||
|
class Solution:
|
||||||
|
def searchInsert(self, nums: List[int], target: int) -> int:
|
||||||
|
low = 0
|
||||||
|
high = len(nums) - 1
|
||||||
|
while low <= high: # Changed the condition to low <= high
|
||||||
|
mid = (high + low) // 2
|
||||||
|
if target == nums[mid]:
|
||||||
|
return mid
|
||||||
|
elif target < nums[mid]:
|
||||||
|
high = mid - 1
|
||||||
|
else:
|
||||||
|
low = mid + 1
|
||||||
|
return low
|
5
leetcode/461.py
Normal file
5
leetcode/461.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
class Solution:
|
||||||
|
def hammingDistance(self, x: int, y: int) -> int:
|
||||||
|
x_y = x ^ y
|
||||||
|
distance = bin(x_y)[2:].count("1")
|
||||||
|
return distance
|
11
leetcode/58.py
Normal file
11
leetcode/58.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
"""
|
||||||
|
Given a string s consisting of words and spaces,
|
||||||
|
return the length of the last word in the string.
|
||||||
|
|
||||||
|
A word is a maximal substring consisting of non-space characters only.
|
||||||
|
"""
|
||||||
|
class Solution:
|
||||||
|
def lengthOfLastWord(self, s: str) -> int:
|
||||||
|
s = s.strip()
|
||||||
|
s = s.split(" ")
|
||||||
|
return len(s[-1])
|
26
leetcode/645.py
Normal file
26
leetcode/645.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
from typing import List
|
||||||
|
|
||||||
|
|
||||||
|
class Solution:
|
||||||
|
|
||||||
|
def findErrorNums(self, nums: List[int]) -> List[int]:
|
||||||
|
sumSetNums = sum(set(nums))
|
||||||
|
sumNums = sum(nums)
|
||||||
|
return [sumNums - sumSetNums, ((len(nums) * (len(nums) + 1)) // 2) - sumSetNums]
|
||||||
|
|
||||||
|
def findErrorNums1(self, nums: List[int]) -> List[int]:
|
||||||
|
n = len(nums)
|
||||||
|
return_list = [0, 0]
|
||||||
|
for i in range(1, n + 1):
|
||||||
|
if i not in nums:
|
||||||
|
return_list[1] = i
|
||||||
|
break
|
||||||
|
|
||||||
|
for i in range(1, n + 1):
|
||||||
|
if i in nums:
|
||||||
|
nums.remove(i)
|
||||||
|
if i in nums:
|
||||||
|
return_list[0] = i
|
||||||
|
break
|
||||||
|
|
||||||
|
return return_list
|
45
leetcode/657.py
Normal file
45
leetcode/657.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
# There is a robot starting at the position (0, 0), the origin,
|
||||||
|
# on a 2D plane. Given a sequence of its moves,
|
||||||
|
# judge if this robot ends up at (0, 0) after it completes its moves.
|
||||||
|
|
||||||
|
# You are given a string moves that represents
|
||||||
|
# the move sequence of the robot where moves[i]
|
||||||
|
# represents its ith move. Valid moves are 'R' (right),
|
||||||
|
# 'L' (left), 'U' (up), and 'D' (down).
|
||||||
|
|
||||||
|
# Return true if the robot returns to the origin after it finishes all of its moves,
|
||||||
|
# or false otherwise.
|
||||||
|
|
||||||
|
# Note: The way that the robot is "facing" is irrelevant.
|
||||||
|
# 'R' will always make the robot move to the right once,
|
||||||
|
# 'L' will always make it move left, etc. Also,
|
||||||
|
# assume that the magnitude of the robot's movement is the same for each move.
|
||||||
|
|
||||||
|
|
||||||
|
# Constraints:
|
||||||
|
|
||||||
|
# 1 <= moves.length <= 2 * 10^4
|
||||||
|
# moves only contains the characters 'U', 'D', 'L' and 'R'.
|
||||||
|
|
||||||
|
|
||||||
|
class Solution:
|
||||||
|
def judgeCircle1(self, moves: str) -> bool:
|
||||||
|
horizontal = 0
|
||||||
|
vertical = 0
|
||||||
|
for move in moves:
|
||||||
|
if move == "U":
|
||||||
|
vertical += 1
|
||||||
|
if move == "D":
|
||||||
|
vertical -= 1
|
||||||
|
if move == "L":
|
||||||
|
horizontal -= 1
|
||||||
|
if move == "R":
|
||||||
|
horizontal += 1
|
||||||
|
return horizontal == 0 and vertical == 0
|
||||||
|
|
||||||
|
def judgeCircle(self, moves: str) -> bool:
|
||||||
|
if moves.count("U")!=moves.count("D"):
|
||||||
|
return False
|
||||||
|
if moves.count("L")!=moves.count("R"):
|
||||||
|
return False
|
||||||
|
return True
|
22
leetcode/66.py
Normal file
22
leetcode/66.py
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
"""You are given a large integer represented as an integer array digits,
|
||||||
|
where each digits[i] is the ith digit of the integer.
|
||||||
|
The digits are ordered from most significant to least significant in left-to-right order.
|
||||||
|
The large integer does not contain any leading 0's.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from typing import List
|
||||||
|
class Solution:
|
||||||
|
def plusOne(self, digits: List[int]) -> List[int]:
|
||||||
|
n = len(digits)
|
||||||
|
# Start from the rightmost digit
|
||||||
|
for i in range(n - 1, -1, -1):
|
||||||
|
# If the current digit is less than 9, just increment it by 1 and return
|
||||||
|
if digits[i] < 9:
|
||||||
|
digits[i] += 1
|
||||||
|
return digits
|
||||||
|
# Otherwise, set the current digit to 0 and continue with the next digit
|
||||||
|
else:
|
||||||
|
digits[i] = 0
|
||||||
|
# If we reach here, it means all digits were 9, so we need to add a new leading 1
|
||||||
|
digits.insert(0, 1)
|
||||||
|
return digits
|
9
leetcode/67.py
Normal file
9
leetcode/67.py
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Given two binary strings a and b, return their sum as a binary string.
|
||||||
|
|
||||||
|
|
||||||
|
class Solution:
|
||||||
|
def addBinary(self, a: str, b: str) -> str:
|
||||||
|
int_a = int("0b" + a, 2)
|
||||||
|
int_b = int("0b" + b, 2)
|
||||||
|
int_c = int_a + int_b
|
||||||
|
return bin(int_c)[2:]
|
23
leetcode/83.py
Normal file
23
leetcode/83.py
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Given the head of a sorted linked list,
|
||||||
|
# delete all duplicates such that each element appears only once.
|
||||||
|
# Return the linked list sorted as well.
|
||||||
|
|
||||||
|
# Definition for singly-linked list.
|
||||||
|
class ListNode:
|
||||||
|
def __init__(self, val=0, next=None):
|
||||||
|
self.val = val
|
||||||
|
self.next = next
|
||||||
|
|
||||||
|
from typing import Optional
|
||||||
|
class Solution:
|
||||||
|
def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
|
||||||
|
if head is None:
|
||||||
|
return head
|
||||||
|
pointer = head
|
||||||
|
while pointer.next is not None:
|
||||||
|
if pointer.val == pointer.next.val:
|
||||||
|
pointer.next = pointer.next.next
|
||||||
|
else:
|
||||||
|
pointer = pointer.next
|
||||||
|
|
||||||
|
return head
|
37
leetcode/88.py
Normal file
37
leetcode/88.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# You are given two integer arrays nums1 and nums2,
|
||||||
|
# sorted in non-decreasing order,
|
||||||
|
# and two integers m and n,
|
||||||
|
# representing the number of elements in nums1 and nums2 respectively.
|
||||||
|
|
||||||
|
# Merge nums1 and nums2 into a single array sorted in non-decreasing order.
|
||||||
|
|
||||||
|
|
||||||
|
# The final sorted array should not be returned by the function,
|
||||||
|
# but instead be stored inside the array nums1.
|
||||||
|
# To accommodate this, nums1 has a length of m + n,
|
||||||
|
# where the first m elements denote the elements that should be merged,
|
||||||
|
# and the last n elements are set to 0 and should be ignored. nums2 has a length of n.
|
||||||
|
|
||||||
|
# Constraints:
|
||||||
|
|
||||||
|
# nums1.length == m + n
|
||||||
|
# nums2.length == n
|
||||||
|
# 0 <= m, n <= 200
|
||||||
|
# 1 <= m + n <= 200
|
||||||
|
# -10^9 <= nums1[i], nums2[j] <= 10^9
|
||||||
|
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
class Solution:
|
||||||
|
def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -> None:
|
||||||
|
"""
|
||||||
|
Do not return anything, modify nums1 in-place instead.
|
||||||
|
"""
|
||||||
|
if n == 0:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
for i in range(n):
|
||||||
|
nums1[m+i] = nums2[i]
|
||||||
|
nums1.sort()
|
||||||
|
|
||||||
|
|
27
luogu/p3717.py
Normal file
27
luogu/p3717.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
# Unfinish
|
||||||
|
from typing import Tuple, List
|
||||||
|
import math
|
||||||
|
|
||||||
|
n, m, r = input().split(" ")
|
||||||
|
locations: List[Tuple[str, str]] = []
|
||||||
|
for i in range(int(m)):
|
||||||
|
location: Tuple[str, str] = tuple(input().split(" "))
|
||||||
|
locations.append(location)
|
||||||
|
|
||||||
|
map = [[0 for _ in range(int(n))] for _ in range(int(n))]
|
||||||
|
count = 0
|
||||||
|
|
||||||
|
for i in range(int(n)):
|
||||||
|
for j in range(int(n)):
|
||||||
|
if map[i][j] == 0:
|
||||||
|
for k in range(int(m)):
|
||||||
|
distance = math.sqrt(
|
||||||
|
(int(locations[k][0]) - i) ** 2 + (int(locations[k][1]) - j) ** 2
|
||||||
|
)
|
||||||
|
if distance <= float(r):
|
||||||
|
map[i][j] = 1
|
||||||
|
count = count + 1
|
||||||
|
break
|
||||||
|
|
||||||
|
print(count)
|
||||||
|
print(map)
|
Loading…
x
Reference in New Issue
Block a user