今天一道是单链表一道是String类的


一:LeetCode 24:两两交换链表中的节点

先来看一下题目信息

索引

题目意思就是把一个链表中的两两节点进行交换,题目给的例子是4个节点,是偶数个,两两节点进行交换,每个节点都有交换的点,那问题来了,万一给出的是奇数个呢?奇数个的话,只需要把最后一个需要注意的是题目要求我们不仅仅要改链表的val值,而是需要我们进行节点交换,意思就是换地址,换链表的箭头。

在这里我拿题目给出的例子讲解。


解法:递归

递归虽然不太好想明白,但是递归的优势是有目共睹的,代码的量也非常少。难?看不懂?想不通?不存在的!待我一一道来。

问题分析

1、 这是一个包含6个节点的单链表,需要把1、2,3、4,5、6分别交换,如果只是交换两个节点的话这道题是非常简单的,
为什么这么说呢?

假设要交换的是1、2,我只需要把2.next指向1,就可以了。仅仅需要一行代码。

两个指针,一个指向头结点的1,一个指向2。

b.next=a;

这样就变成了b指向a

但题目的要求是需要我们返回交换后的链表,就不能简单这这样操纵了。

2、交换完1,2之后,那我问你?1接下来指向谁?你要回答是3我只能给你6分,你要是回答4我给你9.5分,给你0.5分的进步空间,多了怕你骄傲,因为1,2交换的同时,3,4也是要交换的。

3、每次我们拿到两个节点的时候我, 我们发现b指针到最后总是会到a的前面,也就是说b是每一段的表头上一段连接的是下一段的b,每一段只要返回b就行了。我们又重复了2这个步骤,这时候我们发现可以使用递归来解决了。

3、 但是经过上面的操纵我们发现诶呀,链表断开了,1谁也没有指向了,我们需要一个指针来指向2之前的节点,慌,我们再来一个c指针


4、上代码

class Solution {public ListNode swapPairs(ListNode head){return connect(head);}public ListNode connect(ListNode node){if(node==null){return null;}ListNode left=node;ListNode mid=node.next;//先判断mid是不是空的if(mid==null){return left;}//互逆操作ListNode right=mid.next;mid.next=left;//递归,工具人干活!left.next=connect(right);//返回b,也就是midreturn mid;}
}

还是有一些细节需要注意的,第一个是先进来需要判断一下node是不是为空,如果是直接返回空, 不然有一种白干活了的感觉,第二个if(mid==null)这条判断需要写在 定义right前面,不然会空指针异常,因为先判断了mid才能安心使用right。第三个因为之前图里面返回的永远是b指针,所以在这里我返回的也就是mid了。

结果

当当当当!!! 祝各位读者更快、更强。

二:1662. 检查两个字符串数组是否相等

上题

索引

这道题还是算简单的,跟你两个字符串数组,判断他们是不是相等。

1、
看题目给出的信息我们发现,它调用的参数是连个字符串数组!!!,一说到数组就要注意了,诶,这时候聪明了,先判断它是不是空的。万一有一个是空另一个不是,就一定是false,两个都是空那就是true了。数组长度也有可能是0.

   if(word1==null &&word2==null){return true;}if(word1==null ||word2==null){return false;}if(word1.length==0||word2.length==0){return false;}

2、
思路:我们创建俩个字符串str1,str2,用来拼接两个数组中的字符。

      String str1="";String str2="";for(int i=0;i<word1.length;i++){str1+=word1 [i];}for(int j=0;j<word2.length;j++){str2+=word2[j];}

3、调用字符串判断方法equals并直接返回

 return str1.equals(str2);

4、完整代码

class Solution {public boolean arrayStringsAreEqual(String[] word1, String[] word2) {String str1="";String str2="";if(word1==null &&word2==null){return true;}if(word1==null ||word2==null){return false;}if(word1.length==0||word2.length==0){return false;}for(int i=0;i<word1.length;i++){str1+=word1 [i];}for(int j=0;j<word2.length;j++){str2+=word2[j];}return str1.equals(str2);}
}

结果

起飞

LeetCode 24:两两交换链表中的节点、1662. 检查两个字符串数组是否相等相关推荐

  1. 想要精通算法和SQL的成长之路 - 两两交换链表中的节点

    想要精通算法和SQL的成长之路 - 两两交换链表中的节点 前言 一. 两两交换链表中的节点 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 两两交换链表中的节点 原题链接 给你一个链表,两两 ...

  2. Leetcode(24)——两两交换链表中的节点

    Leetcode(24)--两两交换链表中的节点 题目 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 1: ...

  3. Java实现 LeetCode 24 两两交换链表中的节点

    24. 两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3-&g ...

  4. LeetCode 23合并K个升序链表24两两交换链表中的节点

    维护不易,点赞再看,感谢支持 合并K个升序链表 题目描述 给你一个链表数组,每个链表都已经按升序排列. 请你将所有链表合并到一个升序链表中,返回合并后的链表. 示例 1: 输入:lists = [[1 ...

  5. LeetCode 24.两两交换链表中的节点 C语言

    题目 24.两两交换链表中的节点 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换. 示例: 给定 1->2->3- ...

  6. 24. 两两交换链表中的节点-两两反转链表-LeetCode

    一.题目 二.思路 1.采用递归的方式 2.可以通过递归的方式实现两两交换链表中的节点. 递归的终止条件是链表中没有节点,或者链表中只有一个节点,此时无法进行交换. 如果链表中至少有两个节点,则在两两 ...

  7. LeedCode 24:两两交换链表中的节点

    两两交换链表中的节点 题目描述: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 链接: 24. 两两交换链表中的 ...

  8. LeetCode-链表-24. 两两交换链表中的节点

    24. 两两交换链表中的节点 思路:使用一个头节点,然后用cur指针指向头 /*** Definition for singly-linked list.* struct ListNode {* in ...

  9. 24.两两交换链表中的节点

    24. 两两交换链表中的节点 方法一:迭代,虚拟头结点 class Solution {public ListNode swapPairs(ListNode head) {ListNode dummy ...

最新文章

  1. 都是套路!要毁灭人类、喷马斯克、还获得公民身份的机器人Sophia,真相确是...
  2. 移动硬盘提示此卷不包含可识别的文件系统数据如何恢复
  3. git中找回丢失的对象
  4. “德国屈臣氏”来天猫!欧洲3000家门店,优质低价背后有啥秘密
  5. 【HTML】 HTML基础知识 表单
  6. .NET或将引入类型类和扩展
  7. 阿里数据总监分享《阿里数据中台建设实践案例》,PPT+语音讲解!
  8. TensorFlow 中 identity 函数理解
  9. windows本地凭据备份与还原
  10. 20162314 Experiment 3 - Sorting and Searching
  11. Android实现“是否退出”对话框和“带图标的列表”对话框
  12. 这么多牛逼的Java常用Json库,万万没想到它的性能最好!
  13. 日本惊现史上最大数字货币被盗案,加密货币交易所疑遭黑客盗走620亿日元!
  14. 新版中日交流标准日本语多媒体版(全25CD)下载
  15. 支付宝扫码枪收银的实现原理你了解吗?
  16. 成功解决excel表格隐藏后右键全选列取消隐藏始终找不出来
  17. python读取pcd文件_Python读取pcd点云文件
  18. 2022年餐饮行业的10大必看趋势
  19. 怎样锁定计算机本地磁盘,win7系统本地磁盘加密的操作方法
  20. 手写Android热修复

热门文章

  1. 微信小程序 取随机数
  2. 我的家庭私有云计划-21
  3. iPhone12一半用户选蓝色
  4. HTC G12 Desire S 金卡制作详细图文教程
  5. 随笔(编号100629)
  6. 微信支付统一下单支付结果回调
  7. Net使用Microsoft.Office.Interop.Excel;创建Excel文件(插入数据、修改格式、生成图表)的方法,以及Excel查看加密
  8. sqlserver补漏
  9. 是什么让我放弃了restful api?了解清楚后我全面拥抱GraphQL
  10. 穿越火线排位赛显示该服务器,CF新段位S7枪王排位调整 排位分数和地图