当前位置: 首页 > web >正文

力扣hot100题(1)

目录

  • 1、两数之和
  • 2、移动零
  • 3、相交链表
  • 4、有效的括号
  • 5、反转链表
  • 6、回文链表
  • 7、环形链表
  • 8、环形链表II
  • 9、合并两个有序链表
  • 10、二叉树的中序遍历

1、两数之和

1. 两数之和 - 力扣(LeetCode)在这里插入图片描述

方法1:

class Solution {public int[] twoSum(int[] nums, int target) {int[] ret = new int[2];for(int i=0;i<nums.length;i++){for(int j=i+1;j<nums.length;j++) {if(nums[i]+nums[j]==target) {ret[0] = i;ret[1] = j;return ret;}                }}return ret;}
}

方法2:

在这里插入图片描述

class Solution {public int[] twoSum(int[] nums, int target) {int[] ret = new int[2];HashMap<Integer,Integer> hash = new HashMap<>();// key:nums[i],value:ifor (int i = 0; i < nums.length; i++) {if (hash.containsKey(target - nums[i])) {ret[0] = i;ret[1] = hash.get(target - nums[i]);return ret;}hash.put(nums[i], i);}return ret;}
}

2、移动零

283. 移动零 - 力扣(LeetCode)

在这里插入图片描述

class Solution {public void moveZeroes(int[] nums) {int dest = -1;for (int cur = 0; cur < nums.length; cur++) {if (nums[cur] != 0) {dest++;int tmp = nums[cur];nums[cur] = nums[dest];nums[dest] = tmp;}}}
}

3、相交链表

160. 相交链表 - 力扣(LeetCode)

在这里插入图片描述

public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode cur1 = headA;ListNode cur2 = headB;int count1 = 0;//统计A结点个数int count2 = 0;//统计B结点个数while (cur1 != null) {count1++;cur1 = cur1.next;}while (cur2 != null) {count2++;cur2 = cur2.next;}if (count1 > count2) {for (int i = 0; i < count1 - count2; i++) {headA = headA.next;}}if (count1 < count2) {for (int i = 0; i < count2 - count1; i++) {headB = headB.next;}}while (headA != headB) {headA = headA.next;headB = headB.next;}return headA;}
}

4、有效的括号

20. 有效的括号 - 力扣(LeetCode)

在这里插入图片描述

class Solution {public boolean isValid(String s) {Stack<Character> stack = new Stack<>();for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);if (ch == '(' || ch == '[' || ch == '{') {//如果是左括号,入栈stack.push(ch);} else {//如果是右括号if (stack.empty()) {//判断栈是否为空return false;} else {char tmp = stack.peek();if (ch == ')' && tmp == '('|| ch == ']' && tmp == '['|| ch == '}' && tmp == '{') {stack.pop();} else {return false;}}}}return stack.empty();}
}

5、反转链表

206. 反转链表 - 力扣(LeetCode)

在这里插入图片描述

方法1:

class Solution {public ListNode reverseList(ListNode head) {if(head==null || head.next==null){return head;}        //1.先反转后面的链表ListNode newHead = reverseList(head.next);//返回反转后的头head.next.next = head;head.next = null;return newHead;}
}

方法2:

class Solution {public ListNode reverseList(ListNode head) {if (head == null) {return head;}ListNode cur = head.next;head.next = null;while (cur != null) {ListNode curNext = cur.next;cur.next = head;head = cur;cur = curNext;}return head;}
}

6、回文链表

234. 回文链表 - 力扣(LeetCode)

在这里插入图片描述

class Solution {public boolean isPalindrome(ListNode head) {if (head == null) {return false;}ListNode fast = head;ListNode slow = head;//找到中间结点while (fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;}ListNode Newhead = reverseList(slow);ListNode tmp1 = head;ListNode tmp2 = Newhead;while (tmp2 != null) {//if (tmp2.val != tmp1.val) {return false;} else {tmp1 = tmp1.next;tmp2 = tmp2.next;}}return true;}//翻转链表public ListNode reverseList(ListNode head) {if (head == null) {return head;}ListNode cur = head.next;head.next = null;while (cur != null) {ListNode curNext = cur.next;cur.next = head;head = cur;cur = curNext;}return head;}
}

7、环形链表

141. 环形链表 - 力扣(LeetCode)

在这里插入图片描述

public class Solution {public boolean hasCycle(ListNode head) {if (head == null) {return false;}ListNode fast = head.next;ListNode slow = head;while (fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;if (fast == slow) {return true;}}return false;}
}

8、环形链表II

142. 环形链表 II - 力扣(LeetCode)

在这里插入图片描述

public class Solution {public ListNode detectCycle(ListNode head) {if (head == null) {return null;}ListNode fast = head;ListNode slow = head;while (fast != null && fast.next != null) {fast = fast.next.next;slow = slow.next;if (fast == slow) {// 两人相遇,说明链表成环while (head != slow) {slow = slow.next;head = head.next;}//return head;}}return null;}
}

9、合并两个有序链表

21. 合并两个有序链表 - 力扣(LeetCode)

在这里插入图片描述

方法1:

class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {if (list1 == null) {return list2;}if (list2 == null) {return list1;}// 1.比大小if (list1.val < list2.val) {list1.next = mergeTwoLists(list1.next, list2);return list1;} else {list2.next = mergeTwoLists(list2.next, list1);return list2;}}
}

方法2:

class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode l1 = list1;ListNode l2 = list2;if (l1 == null) {return l2;}if (l2 == null) {return l1;}ListNode newHead = null;ListNode newTail = null;while (l1 != null && l2 != null) {if (l1.val <= l2.val) {//if (newTail == null) {newHead = newTail = l1;l1 = l1.next;} else {newTail.next = l1;newTail = l1;l1 = l1.next;}} else {if (newTail == null) {newHead = newTail = l2;l2 = l2.next;} else {newTail.next = l2;newTail = l2;l2 = l2.next;}}}//if (l1 == null) {newTail.next = l2;} else {newTail.next = l1;}return newHead;}
}

10、二叉树的中序遍历

94. 二叉树的中序遍历 - 力扣(LeetCode)

在这里插入图片描述

class Solution {List<Integer> ret = new LinkedList<Integer>();public List<Integer> inorderTraversal(TreeNode root) {        if (root == null) {return ret;}dfs(root, ret);return ret;}public void dfs(TreeNode root, List<Integer> ret) {if (root == null) {return;}dfs(root.left, ret);ret.add(root.val);dfs(root.right, ret);}
}
http://www.xdnf.cn/news/14907.html

相关文章:

  • Android 安装使用教程
  • 网安系列【1】:黑客思维、技术与案例解析
  • MIGraphX的动态shape原理解析
  • MySQL 8.0 OCP 1Z0-908 题目解析(18)
  • OpenCV篇——项目(二)OCR文档扫描
  • Jenkins 构建过程常见错误
  • 机器学习-03(机器学习任务攻略)
  • JavaScript的初步学习
  • 接口幂等性
  • ArcGISPro应用指南:ArcGISPro制图全流程详解
  • 缺少关键的 MapReduce 框架文件
  • 使用Python Watchdog库实现文件系统监控
  • 双向链表的实现
  • 深度剖析数据降维,PCA、LDA、NMF、LLE主流数据降维算法原理与代码实践
  • 分布式部署下如何做接口防抖---使用分布式锁
  • 站在 Java 程序员的角度如何学习和使用 AI?从 MVC 到智能体,范式变了!
  • 清除浮动/避开margin折叠:前端CSS中BFC的特点与限制
  • springMvc的简单使用:要求在浏览器发起请求,由springMVC接受请求并响应,将个人简历信息展示到浏览器
  • pdf 合并 python实现(已解决)
  • springboot切面编程
  • 【Java面试】RocketMQ的设计原理
  • 【数字后端】- tcbn28hpcplusbwp30p140,标准单元库命名含义
  • 按月设置索引名的完整指南:Elasticsearch日期索引实践
  • 嵌入式软件面经(四)Q:请说明在 ILP32、LP64 与 LLP64 三种数据模型下,常见基本类型及指针的 sizeof 值差异,并简要解释其原因
  • 提示技术系列——程序辅助语言模型
  • HCIA-实现VLAN间通信
  • 智能物流革命:Spring Boot+AI实现最优配送路径规划
  • 红黑树:高效平衡的秘密
  • Spring生态在Java开发
  • Android Native 之 init初始化selinux机制