按题意模拟即可。
class Solution:
def findMissingAndRepeatedValues(self, grid: List[List[int]]) -> List[int]:
n = len(grid)
b = set(range(1,n*n+1))
cnt = Counter()
for row in grid:
for v in row:
b.discard(v)
cnt[v]+=1
if cnt[v] == 2:
a = v
return [a, b.pop()]
翻译害人不浅,根本就不是子数组,原文是Divide the array into one or more arrays of size 3 satisfying the following conditions:
class Solution:
def divideArray(self, nums: List[int], k: int) -> List[List[int]]:
nums.sort()
ret = []
for i in range(0, len(nums), 3):
if nums[i + 2] - nums[i] > k:
return []
ret.append(nums[i:i + 3])
return ret
biao=list(range(1,10))
for i in range(10**4):
s = str(i)
p = int(s + s[::-1])
if p < 10**9:
biao.append(p)
for j in range(10):
p = int(s +str(j)+ s[::-1])
if p < 10**9:
biao.append(p)
biao = sorted(set(biao))
class Solution:
def minimumCost(self, nums: List[int]) -> int:
n = len(nums)
nums.sort()
pre = [0] + list(accumulate(nums))
def f(x):
p = bisect_left(nums,x)
s = 0
if p > 0:
s += x*p - pre[p-1+1] + pre[0]
if p < n:
s += pre[n] - pre[p] - x*(n-p)
return s
ans = inf
p = bisect_left(biao,nums[(n-1)//2])
if p:
ans = f(biao[p-1])
if p < len(biao):
ans = min(ans,f(biao[p]))
return ans
class Solution {
public int[][] divideArray(int[] nums, int k) {
Arrays.sort(nums);
List<int[]> ret = new ArrayList<>();
for (int i = 0; i < nums.length; i += 3) {
if (i + 2 < nums.length && nums[i + 2] - nums[i] > k) {
return new int[][]{};
}
int[] subArray = Arrays.copyOfRange(nums, i, Math.min(i + 3, nums.length));
ret.add(subArray);
}
return ret.toArray(new int[0][]);
}
}
[100123. 执行操作使频率分数最大
class Solution:
def maxFrequencyScore(self, nums: List[int], k: int) -> int:
if k == 0:
return max(Counter(nums).values())
nums.sort()
pre = [0] + list(accumulate(nums))
n = len(nums)
def f(l,r):
mid = (l+r)//2
p = nums[mid]*(mid-l+1) - (pre[mid+1] - pre[l]) + pre[r+1] - pre[mid] - nums[mid] * (r-mid+1)
return p <= k
l = ans = 0
for r in range(n):
while not f(l,r):
l += 1
ans = max(ans, r - l + 1)
return ans