有序数组的平法
题目描述:
调库解法:
class Solution(object):
def sortedSquares(self, nums):
square = sorted(map(lambda x: x*x, nums))
return square
双指针解法:
class Solution(object):
def sortedSquares(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
i = 0
j = len(nums) - 1
k = len(nums) - 1
result = [0] * (k + 1)
while i <= j:
if nums[i] * nums[i] < nums[j] * nums[j]:
result[k] = nums[j] * nums[j]
k -= 1
j -= 1
if nums[i] * nums[i] >= nums[j] * nums[j]:
result[k] = nums[i] * nums[i]
k -= 1
i += 1
return result
长度最小的子数组
题目描述:
双指针解法:
class Solution(object):
def minSubArrayLen(self, target, nums):
"""
:type target: int
:type nums: List[int]
:rtype: int
"""
sum = 0
i = 0
j = 0
result = float("inf")
subLength = 0
for j in range(len(nums)):
sum += nums[j]
while sum >= target:
subLength = j - i + 1
result = min(result, subLength)
sum -= nums[i]
i += 1
return 0 if result == float("inf") else result
螺旋矩阵Ⅱ
题目描述:
解题代码:
class Solution(object):
def generateMatrix(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
nums = [[0] * n for _ in range(n)]
startx = 0
starty = 0
loop = n // 2
mid = n // 2
count = 1
for offset in range(1, loop + 1):
for j in range(starty, n - offset):
nums[startx][j] = count
count += 1
for i in range(startx, n - offset):
nums[i][n - offset] = count
count += 1
for j in range(n - offset, starty, -1):
nums[n - offset][j] = count
count += 1
for i in range(n - offset, startx, -1):
nums[i][starty] = count
count += 1
startx += 1
starty += 1
if n % 2 == 1:
nums[mid][mid] = n *n
return nums