手撕算法(定制整理版2)

最长无重复子字符串

python 复制代码
class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        if not s:
            return 0
        max_len = 0
        tp = []
        for a in s:
            while a in tp:
                del tp[0]
            tp.append(a)
            if len(tp) > max_len:
                max_len = len(tp)
        return max_len

# ACM模式输入输出处理
if __name__ == "__main__":
    import sys
    for line in sys.stdin:
        s = line.strip()
        sol = Solution()
        print(sol.lengthOfLongestSubstring(s))

把数组排成最小数,最大数,数组中的数组合出最大的数字

python 复制代码
class Solution(object):
    def largestNumber(self, nums):
        """
        :type nums: List[int]
        :rtype: str
        """
        def compare(x, y):
            xy = str(x) + str(y)
            yx = str(y) + str(x)
            return (xy > yx) - (xy < yx)  # 返回 -1, 0, 1
        
        nums.sort(cmp=compare)
        if not nums or nums[0] == 0:
            return "0"
        return ''.join(map(str, nums))

对称的二叉树

python 复制代码
class Solution(object):
    def isSymmetric(self, root):
        """
        :type root: Optional[TreeNode]
        :rtype: bool
        """
        if not root:
            return True
        def dfs(left, right):
            if not (left or right):
                return True
            if not (left and right):
                return False
            if left.val != right.val:
                return False
            return dfs(left.left, right.right) and dfs(left.right, right.left)
        return dfs(root.left, root.right)

回文数

python 复制代码
class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if x < 0:
            return False
        ans = 0
        prior = x
        while x > 0:
            temp = x % 10
            ans = ans * 10 + temp
            x //= 10
        return ans == prior

# ACM模式输入输出处理
if __name__ == "__main__":
    import sys
    for line in sys.stdin:
        # 处理输入:假设每行一个整数
        x = int(line.strip())
        sol = Solution()
        print(sol.isPalindrome(x))

最长回文子串

python 复制代码
class Solution(object):
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        if len(s) < 2:
            return s
            
        res = ""
        for i in range(len(s)):
            # 奇数长度回文
            l, r = i, i
            while l >= 0 and r < len(s) and s[l] == s[r]:
                if r - l + 1 > len(res):
                    res = s[l:r+1]
                l -= 1
                r += 1
            
            # 偶数长度回文
            l, r = i, i+1
            while l >= 0 and r < len(s) and s[l] == s[r]:
                if r - l + 1 > len(res):
                    res = s[l:r+1]
                l -= 1
                r += 1
                
        return res

# ACM模式输入输出处理
if __name__ == "__main__":
    import sys
    for line in sys.stdin:
        s = line.strip()
        sol = Solution()
        print(sol.longestPalindrome(s))

子字符串在原字符串中出现的次数

python 复制代码
def count_substring(string, sub_string):
    """
    :type string: str
    :type sub_string: str
    :rtype: int
    """
    count = 0
    len_sub = len(sub_string)
    len_str = len(string)
    
    for i in xrange(len_str - len_sub + 1):
        if string[i:i+len_sub] == sub_string:
            count += 1
    return count

合并区间

python 复制代码
class Solution(object):
    def merge(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: List[List[int]]
        """
        intervals.sort(key=lambda x: x[0])

        merged= []

        for interval in intervals:
            if not merged or merged[-1][1] <interval[0]:
                merged.append(interval)
            else:
                merged[-1][1] = max(merged[-1][1],interval[1])
        
        return merged

合并两个有序链表

python 复制代码
class Solution(object):
    def mergeTwoLists(self, list1, list2):
        """
        :type list1: Optional[ListNode]
        :type list2: Optional[ListNode]
        :rtype: Optional[ListNode]
        """
        dummy = ListNode(0)
        cur = dummy
        while list1 and list2:
            if list1.val < list2.val:
                cur.next = list1
                list1 = list1.next
            else:
                cur.next = list2
                list2 = list2.next
            cur = cur.next
        cur.next = list1 if list1 else list2
        return dummy.next

反转链表

python 复制代码
class Solution(object):
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        cur = head
        pre = None
        while cur is not None:
            temp = cur.next
            cur.next = pre
            pre = cur
            cur = temp
        return pre

数组找出乘积为n的两个数

写个函数来校验两个二叉树是否相同,要结构和值都相同

数组中出现最多的数字

python 复制代码
def find_most_frequent(nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    if not nums:
        return None
    
    count_dict = {}
    max_count = 0
    result = nums[0]
    
    for num in nums:
        if num in count_dict:
            count_dict[num] += 1
        else:
            count_dict[num] = 1
            
        if count_dict[num] > max_count:
            max_count = count_dict[num]
            result = num
        elif count_dict[num] == max_count:
            # 如果出现次数相同,返回数值较小的
            result = min(result, num)
            
    return result

滑动窗口

++抖音电商测开++

相关推荐
KyollBM5 分钟前
【Luogu】每日一题——Day15. P1144 最短路计数 (记忆化搜索 + 图论 + 最短路)
算法·图论
Olrookie9 分钟前
若依前后端分离版学习笔记(一)——本地部署
笔记·后端·开源
一百天成为python专家13 分钟前
K-近邻算法
数据结构·python·算法·pandas·近邻算法·ipython·python3.11
满分观察网友z30 分钟前
告别烦人的“三连发”:我的智能评论系统过滤之旅(1957. 删除字符使字符串变好)
算法
满分观察网友z34 分钟前
滑动窗口下的极限挑战:我在实时数据流中挖掘最大价值分(1695. 删除子数组的最大得分)
算法
山烛1 小时前
KNN 算法中的各种距离:从原理到应用
人工智能·python·算法·机器学习·knn·k近邻算法·距离公式
guozhetao1 小时前
【ST表、倍增】P7167 [eJOI 2020] Fountain (Day1)
java·c++·python·算法·leetcode·深度优先·图论
吃着火锅x唱着歌1 小时前
LeetCode 611.有效三角形的个数
算法·leetcode·职场和发展
##echo1 小时前
嵌入式Linux裸机开发笔记9(IMX6ULL)GPIO 中断实验(1)
linux·c语言·笔记·单片机·嵌入式硬件
CHANG_THE_WORLD4 小时前
金字塔降低采样
算法·金字塔采样