378. 有序矩阵中第K小的元素
给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。
请注意,它是排序后的第k小元素,而不是第k个元素。
示例:
matrix = [
[ 1, 5, 9],
[10, 11, 13],
[12, 13, 15]
],
k = 8,
返回 13。
说明:
你可以假设 k 的值永远是有效的, 1 ≤ k ≤ n2 。
class Solution:
def kthSmallest(self, matrix: List[List[int]], k: int) -> int:
list_matrix = []
for i in range(len(matrix)):
list_matrix += matrix[i]
heapq.heapify(list_matrix)
return [heapq.heappop(list_matrix) for _ in range(k)][-1]
剑指 Offer 48. 最长不含重复字符的子字符串
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。
示例 1:
输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:
输入: “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:
输入: “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。
提示:
s.length <= 40000
def longest_sub_str_1(s):
if not s or len(s) == 0:
return 0
d = {
}
p1,p2 = -1,0
max_len = 0
while p1 < len(s) and p2 < len(s):
if s[p2] in d:
p1 = max(p1, d[s[p2]])
d[s[p2]] = p2
max_len = max(p2 - p1, max_len)
p2 += 1
return max_len
#coding:utf-8
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param s string字符串
# @return int整型
#
class Solution:
def lengthOfLongestSubstring(self , s ):
# write code here
dic = {
} # 存储当前字符上次出现的idx
max_n, last_max = 0<