微信搜一搜bigsai 专注于Java、数据结构与算法,一起进大厂不迷路!
算法文章题解全部收录在github仓库bigsai-algorithm,求star!
关注回复进群即可加入力扣打卡群,欢迎划水。近期打卡:
LeetCode 73矩阵置零&74搜素二维矩阵&75颜色分类
Leetcode 76最小覆盖子串&77组合&78子集
LeetCode 79单词搜索&80删除排序数组中的重复项Ⅱ&81.搜索旋转排序数组Ⅱ
如有帮助,记得一键三连

分割链表

题目描述:

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。

你应当保留两个分区中每个节点的初始相对位置。

示例:

输入: head = 1->4->3->2->5->2, x = 3
输出: 1->2->2->4->3->5

分析:
这题的话也很简单,它要求将小于x的节点放到前面,且相对位置不变。我们可以采用两个链表将其分割开来然后再合并,在具体的处理上,可以创建两个带头节点的链表,遍历这个链表,其中一个收集比x小的节点,另一个收集比x大的节点,最后组合一下即可。

实现代码为:

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode(int x) { val = x; }* }*/
class Solution {public ListNode partition(ListNode head, int x) {ListNode smallhead=new ListNode(0);//头节点 0不使用ListNode smallteam=smallhead;//进行遍历ListNode bighead=new ListNode(0);//头ListNode bigteam=bighead;//遍历使用while (head!=null) {if(head.val<x){smallteam.next=head;smallteam=smallteam.next;}else {bigteam.next=head;bigteam=bigteam.next;}head=head.next;}smallteam.next=bighead.next;//拼接bigteam.next=null;//置空return smallhead.next;}
}

时间的话都是0ms。

扰乱字符串

分析:
题意很清晰,就问你s1能不能转换成s2。本题可以采用递归和动态规划的方式,两者一个是从前往后,一个是从后往前进行递推。

判断是否能够经过递归交换转换而来,首先两个字符串s1和s2需要等长,然后其中的元素种类和个数也需要完全相同才行。(具体实现上可以借助hashmap或者数组进行计数统计)。

相同之后可能有很多种划分需要一一的进行比较,可以递归向下进行(要有递归信任),分的两个组合情况有一个可以交换即可认为是true的。


具体实现代码上,我使用递归的方式,通过字符串转成字符数组优化一点速度。

class Solution {public boolean isScramble(String s1, String s2) {if(s1.equals(s2))return true;if(s1.length()!=s2.length())return false;char ch1[]=s1.toCharArray();char ch2[]=s2.toCharArray();int count[]=new int[26];for(int i=0;i<ch2.length;i++){count[ch1[i]-'a']++;count[ch2[i]-'a']--;}for(int  i=0;i<26;i++){if(count[i]!=0)//计数看看单词是否等{return false;}}for(int i=1;i<ch1.length;i++)//进行划分,递归的匹配{if(isScramble(s1.substring(0,i), s2.substring(0, i))&&isScramble(s1.substring(i), s2.substring(i))){return true;}if(isScramble(s1.substring(0,i), s2.substring(s2.length()-i))&&isScramble(s1.substring(i), s2.substring(0,s2.length()-i))){return true;}}return false;      }
}

至于动态规划的解题方法,是一个从下往上的递推过程,实现上需要考虑下边界初始化和递推式,这里就不实现啦,有兴趣的可以参考官网。

结语

原创不易,bigsai请你帮两件事帮忙一下:

  1. star支持一下, 您的肯定是我在平台创作的源源动力。

  2. 微信搜索「bigsai」,关注我的公众号,不仅免费送你电子书,我还会第一时间在公众号分享知识技术。加我还可拉你进力扣打卡群一起打卡LeetCode。

记得关注、咱们下次再见!

LeetCode 86分割链表87扰乱字符串相关推荐

  1. LeetCode 87. 扰乱字符串(记忆化递归 / DP)

    文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 动态规划 1. 题目 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树. 下图是字符串 s1 = &q ...

  2. leetcode 87. 扰乱字符串(dp)

    使用下面描述的算法可以扰乱字符串 s 得到字符串 t : 如果字符串的长度为 1 ,算法停止 如果字符串的长度 > 1 ,执行下述步骤: 在一个随机下标处将字符串分割成两个非空的子字符串.即,如 ...

  3. LeetCode 87. 扰乱字符串(递归)

    题目描述 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树. 下图是字符串 s1 = "great" 的一种可能的表示形式. great / g ...

  4. LeetCode 86. 分隔链表 中等难度

    题目 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前.你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1->4- ...

  5. 23. Leetcode 86. 分隔链表 (链表-基础操作类-分隔链表)

    给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前.你应当 保留 两个分区中每个节点的初始相对位置.示例 1:输入: ...

  6. Leetcode 86. 分隔链表

    给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1->4-&g ...

  7. leetcode 86. 分隔链表(链表)

    给你一个链表和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入:head = 1-> ...

  8. LeetCode 92反转链表Ⅱ93复制ip地址94二叉树的中序遍历

    微信搜一搜:bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打卡群,欢迎 ...

  9. jsp判断字符串相等_leetcode 86 扰乱字符串(c++)

    ###题目 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树,下图是字符串 s1="great"的一种可能的表示形式. 在扰乱这个字符串的过程中 ...

最新文章

  1. 从Nginx绑定80端口学套接字编程
  2. go1.5及以上版本交叉编译
  3. 用筛法求之N内的素数。(N 1000000)
  4. leetcode算法题--二进制中1的个数
  5. Java: 数据类型
  6. [ARM-assembly]-A64指令集合总结
  7. python jdbc_javapython连接mysql快速造数
  8. html不用点击自动执行,页面自动执行(加载)js的几种方法
  9. UEditor 插入图片大于2M提示文件大小超出范围解决办法
  10. 【报告分享】中国移动互联网2021年度大报告.pdf(附下载链接)
  11. tomcat安装启动startup.bat文件命令行界面出现乱码的问题解决
  12. ASP.NET开发51种常用代码
  13. pip安装环境报错[Errno 99] Cannot assign requested address问题解决
  14. 20145205 《信息安全系统设计基础》第1周学习总结
  15. spring(12)
  16. 01-移植AZPR SoC到Xilinx Aritix7 FPGA
  17. log4j自定义配置文件路径
  18. WPS/Word参考文献格式规范及引用的方法
  19. 据说200G网盘资料
  20. Spire.PDF帮你高效搞定PDF打印

热门文章

  1. (chap6 Http首部) 响应首部字段 Ct-MD5Ct-RangeCt-TypeExpiresLast-Modified
  2. (chap2 简单的Http协议) HTTP性能优化之持久连接Keep Alive
  3. 下载linux操作系统一般的初始账号密码(虚拟机)
  4. ubuntu中pycharm打不开的的处理方法
  5. MySQL—外连接查询
  6. 题目2:隐式图的搜索问题(A*算法解决八数码)代码实现
  7. Windows保护模式学习笔记(十)—— TLB
  8. MySQL安装教程,包含所有平台(图解)
  9. 【Nginx】 server 配置记录
  10. Python爬虫基本框架