LeetCode刷题笔记(三)

逃离我推掉我的手 2023-06-21 10:12 81阅读 0赞

11. 有效的括号

给定一个只包括 ‘(‘,’)’,’{‘,’}‘,’[‘,’]‘ 的字符串,判断字符串是否有效。

有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。
  • 注意空字符串可被认为是有效字符串。

示例 1:

输入: “()”
输出: true

示例 2:

输入: “()[]{}“
输出: true

示例 3:

输入: “(]“
输出: false

示例 4:

输入: “([)]“
输出: false

示例 5:

输入: “{[]}“
输出: true

解法:

  1. class Solution {
  2. public boolean isValid(String s) {
  3. if(s.length()%2 == 1 ){
  4. return false;
  5. }
  6. Stack<Character> stack = new Stack<Character>();
  7. Map<Character,Character> map = new HashMap<Character,Character>();
  8. map.put(')','(');
  9. map.put('}','{');
  10. map.put(']','[');
  11. for(char c:s.toCharArray()){
  12. if(!stack.empty() && stack.peek() == map.get(c)){
  13. stack.pop();
  14. }else{
  15. stack.push(c);
  16. }
  17. }
  18. return stack.empty();
  19. }
  20. }

12. 合并两个有序链表

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

解法:

  1. /**
  2. * Definition for singly-linked list.
  3. * public class ListNode {
  4. * int val;
  5. * ListNode next;
  6. * ListNode(int x) { val = x; }
  7. * }
  8. */
  9. class Solution {
  10. public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
  11. if( null == l1){
  12. return l2;
  13. }
  14. if( null == l2){
  15. return l1;
  16. }
  17. if(l1.val <= l2.val){
  18. l1.next = mergeTwoLists(l1.next,l2);
  19. return l1;
  20. }else{
  21. l2.next = mergeTwoLists(l2.next,l1);
  22. return l2;
  23. }
  24. }
  25. }

13. 两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

  1. /**
  2. * Definition for singly-linked list.
  3. * public class ListNode {
  4. * int val;
  5. * ListNode next;
  6. * ListNode(int x) { val = x; }
  7. * }
  8. */
  9. class Solution {
  10. public ListNode swapPairs(ListNode head) {
  11. if(head == null){
  12. return null;
  13. }
  14. if(head.next == null){
  15. return head;
  16. }
  17. ListNode node = head.next;
  18. head.next = swapPairs(node.next);
  19. node.next = head;
  20. return node;
  21. }
  22. }

发表评论

表情:
评论列表 (有 0 条评论,81人围观)

还没有评论,来说两句吧...

相关阅读

    相关 LeetCode笔记

    [23. Merge k Sorted Lists][] > 要点: > > 1. 学会数据结构PriorityQueue(优先队列)的用法, 通过给优先队列传入自定义