• 768. 最多能完成排序的块 II 分治


    768. 最多能完成排序的块 II

    给你一个由小写字母组成的字符串 s ,和一个整数 k 。如果满足下述条件,则可以将字符串 t 视作是 理想字符串 :

    • t 是字符串 s 的一个子序列。
    • t 中每两个 相邻 字母在字母表中位次的绝对差值小于或等于 k 。

    返回 最长 理想字符串的长度。

    字符串的子序列同样是一个字符串,并且子序列还满足:可以经由其他字符串删除某些字符(也可以不删除)但不改变剩余字符的顺序得到。

    注意:字母表顺序不会循环。例如,'a' 和 'z' 在字母表中位次的绝对差值是 25 ,而不是 1 。

    示例 1:

    输入:s = "acfgbd", k = 2
    输出:4
    解释:最长理想字符串是 "acbd" 。该字符串长度为 4 ,所以返回 4 。
    注意 "acfgbd" 不是理想字符串,因为 'c' 和 'f' 的字母表位次差值为 3 。

    示例 2:

    输入:s = "abcd", k = 3
    输出:4
    解释:最长理想字符串是 "abcd" ,该字符串长度为 4 ,所以返回 4 。
    

    提示:

    • 1 <= s.length <= 1e5
    • 0 <= k <= 25
    • s 由小写英文字母组成

    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/longest-ideal-subsequence
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

     做题结果

    成功,简单的分治

    方法:分治

    1. 把数组平均分成前后两个部分

    2. 把两个部分合并完之后再进行两个链表的合并

    3. 返回合并后的结果

    4. 处理递归末尾:如果只有一个元素,返回该元素

    5. 坑:空列表,列表中的空链表,这两个地方需要特判处理

    1. class Solution {
    2. public ListNode mergeKLists(ListNode[] lists) {
    3. if(lists == null||lists.length == 0) return null;
    4. return merge(lists,0,lists.length-1);
    5. }
    6. private ListNode merge(ListNode[] lists, int start, int end){
    7. if(start == end) return lists[start];
    8. int mid = (end-start)/2+start;
    9. ListNode a = merge(lists,start,mid);
    10. ListNode b = merge(lists,mid+1,end);
    11. return mergeTwo(a,b);
    12. }
    13. private ListNode mergeTwo(ListNode a, ListNode b){
    14. if(a==null) return b;
    15. if(b==null) return a;
    16. ListNode head = new ListNode(0);
    17. ListNode curr = head;
    18. while (a!=null&&b!=null){
    19. if(a.val
    20. curr.next = a;
    21. a = a.next;
    22. }else{
    23. curr.next = b;
    24. b = b.next;
    25. }
    26. curr = curr.next;
    27. }
    28. curr.next = a!=null?a:b;
    29. return head.next;
    30. }
    31. }

  • 相关阅读:
    安全架构设计理论与实践
    3.6 Windows驱动开发:内核进程汇编与反汇编
    Java 中如何将一个类中方法的局部变量在另一个方法中调用?
    端口安全、MAC地址漂移、MACsec、流量控制、DHCP snooping
    Linux下查找文件(日志)中的关键字
    OutOfMemoryError不常见,但你必须了解!面试问一个挂一个
    通用的方法在任何云VM上安装Mikrotik的Cloud Hosted Router
    带有污染训练数据的深度时间序列异常检测模型的鲁棒学习
    pycharm中出现这个的原因是什么,如何解决?
    短视频矩阵系统,抖音矩阵系统,抖音SEO源码。
  • 原文地址:https://blog.csdn.net/yu_duan_hun/article/details/126324150