java-leetcode
Vermouth_su
这个作者很懒,什么都没留下…
展开
-
java: 请用java代码实现字符串的反转,如:输入abcde,输出edcba。
public class Main{ public static void main(String[] args) { String a="cdsjcnjanadbcds"; System.out.println(reverse(a)); } public static String reverse(String s){ StringBuilder sb=new StringBuilder(); for (int i.原创 2021-03-03 16:10:29 · 1529 阅读 · 1 评论 -
java根据元素出现的个数进行排序---hashmap、sort
给定一个正整数无序数组,按照出现的次数由少到多排序,如果两数次数相同则按照数由小到大排。例:给定数组:{3,3,3,2,2,4,4,1,8,7,7,7,7,6},排序结果为:[1, 6, 8, 2, 4, 3, 7]解析:1出现一次,6出现一次,8出现一次,按照1<6<8;2出现两次,4出现两次,按照2<4;3出现三次,7出现四次。提示:你可以使用Map,Java8 API来解决。我的解题:现将每个数与其出现的个数保存在hashmap中将hashmap的keySe...原创 2021-03-03 16:03:33 · 1392 阅读 · 1 评论 -
剑指 Offer 03. 数组中重复的数字----hashset / swap
剑指 Offer 03. 数组中重复的数字class Solution { public int findRepeatNumber(int[] nums) { HashSet<Integer> set=new HashSet<>(); int len=nums.length; for(int i=0;i<len;i++){ if(!set.add(nums[i])) return n...原创 2020-08-25 12:46:39 · 102 阅读 · 0 评论 -
剑指 Offer 34. 二叉树中和为某一值的路径
剑指 Offer 34. 二叉树中和为某一值的路径LinkedList的用法: list.removeLast()注意代码中添加路径时需要new LinkedList(list) 否则结果为空(可能是因为, new LinkedList(path)是深拷贝,要拷贝一个 path并添加~ 不然 res 里面所有的 path 都指向同一个对象)class Solution { LinkedList<List<Integer>> res=new LinkedL原创 2020-08-19 12:29:18 · 119 阅读 · 0 评论 -
剑指 Offer 55 - I. 二叉树的深度---递归/广度遍历
剑指 Offer 55 - I. 二叉树的深度方法一: 递归class Solution { public int maxDepth(TreeNode root) { if(root==null) return 0; return Math.max(maxDepth(root.left)+1,maxDepth(root.right)+1); }}方法二: 广度遍历(Queue)class Solution { public in原创 2020-08-18 18:19:40 · 93 阅读 · 0 评论 -
剑指 Offer 33. 二叉搜索树的后序遍历序列---递归
剑指 Offer 33. 二叉搜索树的后序遍历序列后序遍历数组: 左子树--右子树--根节点取根节点, 从从左向右遍历数组段, 以第一个大于根节点的元素的索引(k)分割数组段若右子树存在小于根节点的元素则falseclass Solution { public boolean verifyPostorder(int[] postorder) { if(postorder==null || postorder.length==0) return true;原创 2020-08-18 18:08:25 · 117 阅读 · 0 评论 -
剑指 Offer 32 - III. 从上到下打印二叉树 III---LinkedList(双向链表)
剑指 Offer 32 - III. 从上到下打印二叉树 IIILinkedListlist. addLastlist.addFirstlist.add--->从后面添加元素class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res=new ArrayList<>..原创 2020-08-18 17:44:03 · 81 阅读 · 0 评论 -
剑指 Offer 32 - II. 从上到下打印二叉树 II
剑指 Offer 32 - II. 从上到下打印二叉树 IIclass Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res=new ArrayList<>(); Queue<TreeNode> q=new LinkedList<>();原创 2020-08-18 15:50:23 · 83 阅读 · 0 评论 -
剑指 Offer 32 - I. 从上到下打印二叉树---Queue
剑指 Offer 32 - I. 从上到下打印二叉树Queue的用法:https://www.runoob.com/java/data-queue.htmlQueue<String> queue = new LinkedList<String>();//添加元素queue.offer("a");System.out.println("poll="+queue.poll());//返回第一个元素,并在队列中删除System.out.println("eleme.原创 2020-08-18 15:35:34 · 108 阅读 · 0 评论 -
剑指 Offer 27. 二叉树的镜像--递归/Stack
剑指 Offer 27. 二叉树的镜像方法一: 递归class Solution { public TreeNode mirrorTree(TreeNode root) { if(root!=null){ TreeNode tmp=root.left; root.left=root.right; root.right=tmp; mirrorTree(root.left);原创 2020-08-18 15:19:28 · 93 阅读 · 0 评论 -
剑指 Offer 26. 树的子结构--递归
剑指 Offer 26. 树的子结构class Solution { public boolean isSubStructure(TreeNode A, TreeNode B) { if(A==null || B==null) return false; if(A.val ==B.val && func(A.right,B.right) && func(A.left,B.left))原创 2020-08-18 15:06:21 · 79 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
剑指 Offer 07. 重建二叉树HashMap的用法:map.put(key,value)map.get(key)/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solutio原创 2020-08-18 14:50:45 · 128 阅读 · 0 评论 -
剑指 Offer 18. 删除链表的节点---双指针
剑指 Offer 18. 删除链表的节点方法一: 双指针/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode deleteNode(ListNode head, int val)原创 2020-08-18 11:15:13 · 120 阅读 · 0 评论 -
剑指 Offer 52. 两个链表的第一个公共节点---指针相遇
剑指 Offer 52. 两个链表的第一个公共节点链表1为A+C.链表2为B+C.当两个指针都走过程度A+B+C时会相遇, 若C=0,相遇时节点为null/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = ..原创 2020-08-18 10:51:28 · 112 阅读 · 0 评论 -
剑指 Offer 35. 复杂链表的复制---hashmap
35. 复杂链表的复制class Solution { public Node copyRandomList(Node head) { if(head==null) return null; HashMap<Node,Node> map=new HashMap<>(); Node cur=head; while(cur!=null){ map.put(cur,new Node(cur原创 2020-08-17 21:14:46 · 109 阅读 · 0 评论 -
剑指 Offer 25. 合并两个排序的链表---常规遍历/递归
25. 合并两个排序的链表我的方法:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { .原创 2020-08-17 20:40:11 · 46 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点 --双指针/递归
22. 链表中倒数第k个节点双指针/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode getKthFromEnd(ListNode head, int k) {原创 2020-08-17 19:47:08 · 112 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
06. 从尾到头打印链表方法一:使用栈, 从头到尾遍历链表, 保存每一个元素/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public int[] reversePrint(ListNode head)原创 2020-08-17 17:12:01 · 46 阅读 · 0 评论 -
LeetCode刷题记录: 141. 环形链表
141. 环形链表方法一:哈希表/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public boolean hasCy原创 2020-08-03 13:14:02 · 103 阅读 · 0 评论 -
LeetCode刷题记录: hashmap 1. 两数之和 387. 字符串中的第一个唯一字符
1. 两数之和class Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer,Integer> map=new HashMap<>(); for(int i=0;i<nums.length;i++){ if(map.containsKey(target-nums[i])) return原创 2020-08-03 12:43:28 · 142 阅读 · 0 评论