第 67 場雙周賽

Yake1965 2022-01-07 20:21:46 阅读数:258

第 67 場雙周賽

2099. 找到和最大的長度為 K 的子序列

Leetcode

class Solution:
def maxSubsequence(self, nums: List[int], k: int) -> List[int]:
# res = sorted([item for item in enumerate(nums)], key=lambda x:-x[1])[:k]
res = sorted(enumerate(nums), key=lambda x:-x[1])[:k]
return [v for _, v in sorted(res)]
class Solution {

public int[] maxSubsequence(int[] nums, int k) {

int n = nums.length;
int[][] indexVal = new int[n][2]; // 輔助數組,用來存儲數值和索引
for (int i = 0; i < n; i++){

indexVal[i][1] = nums[i];
indexVal[i][0] = i;
}
Arrays.sort(indexVal, (a, b) -> b[1] - a[1]); // 按照數值 nums[i] 從大到小排序
Arrays.sort(indexVal, 0, k, (a, b) -> a[0] - b[0]); // 按照索引 i 從小到大進行排列
int[] res = new int[k]; // 複制結果
for(int i = 0; i < k; i++){
 res[i] = indexVal[i][1]; }
return res;
}
}

2100. 適合打劫銀行的日子

Leetcode

2101. 引爆最多的炸彈

Leetcode

2102. 序列順序查詢

Leetcode

from sortedcontainers import SortedList
class SORTracker:
def __init__(self):
# self.q = SortedList()
self.q = []
self.idx = count() # 迭代器,3.1版
def add(self, name: str, score: int) -> None:
# self.q.add((-score, name))
bisect.insort_left(self.q, [-score, name])
def get(self) -> str:
return self.q[next(self.idx)][1]
class SORTracker {

class Scenery {

String name;
int score;
public Scenery(String name, int score){

this.name = name;
this.score = score;
}
}
TreeSet<Scenery> set;
Scenery spot = new Scenery("哨兵", -1); // 哨兵 
public SORTracker() {

set = new TreeSet<Scenery>((a, b) -> (a.score != b.score) ? b.score - a.score : a.name.compareTo(b.name));
set.add(spot);
}
public void add(String name, int score) {

Scenery s = new Scenery(name, score);
set.add(s);
if(s.score >= spot.score){
 // 添加一個更好的景點 spot 指向前一個更好的景點。
if(s.score == spot.score){

if(s.name.compareTo(spot.name) < 0) spot = set.lower(spot);
}
else spot = set.lower(spot);
}
}
public String get() {

String res = spot.name;
spot = set.higher(spot); // 指向下一個剛好比 spot 差的景點
return res;
}
}
// E higher​(E e) 返回此集合中的剛好大於給定元素,如果沒有這樣的元素,則 null 。
// E lower​(E e) 返回此集合中的最大元素嚴格小於給定元素,如果沒有這樣的元素,則 null 。
版权声明:本文为[Yake1965]所创,转载请带上原文链接,感谢。 https://gsmany.com/2022/01/202201072021455181.html