周赛综述&总结:
https://leetcode.cn/contest/weekly-contest-348/
保分大师is me,一上来看到t1就是一个脑瓜壳嗡嗡,然后先把t2做了再做t1,最后t3还算是一个比较好想的题,就是从后往前推,因为最后的状态就一定是已经确定下来的了,然后当时忽略了一种情况就是重复行还是什么的情况,反正就是只有第一次会减掉一些计数,把这个地方考虑进去后就AC了
第一题:自己想的太复杂了,实际上是能直接得到结论但是证明不好证明的那种问题,最后实际上只是不同字母的个数(自己的做法贼复杂)
第二题:第二个也是个easy题,就是找到最大值和最小值,如果最大值在最小值的左边,则移动可以少一次这样的
第三题:从后往前倒着想,想到倒着想之后基本已经完成了90%了,但是还需要处理重复行的情况
第四题:g
第一题:2716. 最小化字符串长度
https://leetcode.cn/problems/minimize-string-length/description/
题目大意
分析和解答
自己想的太复杂了,实际上是能直接得到结论但是证明不好证明的那种问题,最后实际上只是不同字母的个数(自己的做法贼复杂)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| class Solution(object): def minimizedStringLength(self, s): """ :type s: str :rtype: int """ flag = [1 for _ in range(len(s))] for i in range(len(s)): if not flag[i]: continue for j in range(i-1, -1, -1): if not flag[j]: continue if s[j] == s[i]: flag[j] = 0 break for k in range(i+1, len(s)): if not flag[k]: continue if s[k] == s[i]: flag[k] = 0 break return sum(flag)
|
1 2 3 4 5 6 7 8
| class Solution: def minimizedStringLength(self, s: str) -> int: return len(set(s))
作者:灵茶山艾府 链接:https://leetcode.cn/problems/minimize-string-length/solutions/2296066/o1-kong-jian-wei-yun-suan-xie-fa-pythonj-7t4p/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
|
第二题:2717. 半有序排列
https://leetcode.cn/problems/semi-ordered-permutation/description/
题目大意
分析和解答
第二个也是个easy题,就是找到最大值和最小值,如果最大值在最小值的左边,则移动可以少一次这样的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Solution(object): def semiOrderedPermutation(self, nums): """ :type nums: List[int] :rtype: int """ _min = min(nums) _max = max(nums) min_index = nums.index(_min) max_index = nums.index(_max) if min_index > max_index: res = min_index + (len(nums)-1-max_index) - 1 else: res = min_index + (len(nums)-1-max_index) return res
|
第三题:2718. 查询后矩阵的和
https://leetcode.cn/problems/sum-of-matrix-after-queries/
题目大意
分析和解答
从后往前倒着想,想到倒着想之后基本已经完成了90%了,但是还需要处理重复行的情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| class Solution: def matrixSumQueries(self, n: int, queries: List[List[int]]) -> int: res = 0 _i = 0 _j = 0 vis_heng = defaultdict(int) vis_zong = defaultdict(int) for i in range(len(queries)-1, -1, -1): _type, index, val = queries[i] if _type == 1: if vis_heng[index] == 1: continue res += ((n-_j) * val) if vis_heng[index] == 0: _i += 1 vis_heng[index] = 1 else: if vis_zong[index] == 1: continue res += ((n-_i) * val) if vis_zong[index] == 0: _j += 1 vis_zong[index] = 1 return res
|