leetcode
风游明
这个作者很懒,什么都没留下…
展开
-
leetcode:26.两数之和 简单
class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for(int i = 0; i < nums.length; i++){ int num = target - nums[i]; if(map.containsKey(num)原创 2021-12-09 15:26:44 · 366 阅读 · 0 评论 -
leetcode:25.两数相加 中等
class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode teamhead=new ListNode(0); ListNode p=l1,q=l2,curr=teamhead; int carry=0; while(p!=null||q!=null){ int x=(p!=null)?p.val:0;原创 2021-12-09 13:59:37 · 247 阅读 · 0 评论 -
leetcode:24.最大子树和 简单
class Solution { public int maxSubArray(int[] nums) { if(nums == null || nums.length == 0) return 0; int res = nums[0]; int maxI = nums[0]; for(int i = 1;i < nums.length;i ++){ maxI = Math.max(maxI原创 2021-12-03 14:13:03 · 478 阅读 · 0 评论 -
leetcode:23.移动零 简单
class Solution { public void moveZeroes(int[] nums) { int i = 0;//记录非0元素的个数 for(int j = 0; j < nums.length ; j++){ if(nums[j] != 0){ nums[i++] = nums[j]; } } for(int k = i; k<原创 2021-12-03 14:02:21 · 76 阅读 · 0 评论 -
leetcode:22.比特计位树 简单
找规律:如果 i 为偶数,那么f(i) = f(i/2)如果 i 为奇数,那么f(i) = f(i - 1) + 1class Solution { public int[] countBits(int num) { int[] result = new int[num+1]; result[0] = 0; for(int i = 1; i <= num; i++){ if(i%2==1) result[i] = r原创 2021-12-03 13:59:26 · 57 阅读 · 0 评论 -
leetcode:21.找到所有数组中消失的数字 简单
还是应用了桶的思想,因为题中条件是不用额外的空间。把i放在nums[i - 1]的位置:首先判断nums[i]是否在它应该在的地方,即nums[i] - 1对应的位置,如果不在就交换,再把交换过来的元素放在它应该在的位置。然后重新遍历一次,发现不符合条件的元素就加入返回数组。如果允许用额外空间的话也可以用标记数组,如果用位图的话需要考虑n的大小。class Solution { public List<Integer> findDisappearedNumbers(int[] num原创 2021-12-03 13:52:09 · 432 阅读 · 0 评论 -
leetcode:20.汉明距离 简单
class Solution { public int hammingDistance(int x, int y) { int num = 0; int temp = x^y; while (temp != 0) { temp = (temp - 1) & temp; num++; } return num; }}原创 2021-12-03 10:17:26 · 70 阅读 · 0 评论 -
leetcode:19.二叉树的直径 简单
class Solution { int max=0; public int diameterOfBinaryTree(TreeNode root) { depth(root); return max; } public int depth(TreeNode root){ if(root==null){ return 0; } int leftdepth=depth(ro原创 2021-12-03 10:09:21 · 418 阅读 · 0 评论 -
leetcode:18.合并二叉树 简单
class Solution { public TreeNode mergeTrees(TreeNode root1, TreeNode root2) { if(root1==null&&root2==null){ return null; } if(root1==null||root2==null){ return root1==null?root原创 2021-12-02 19:11:22 · 282 阅读 · 0 评论 -
leetcode:17.回文链表 简单
class Solution { public boolean isPalindrome(ListNode head) { if(head==null||head.next==null){//有0个或1个节点 return true; } ListNode right=head.next; ListNode cur=head; //靠cur确定右半区起始点位置(right) while原创 2021-12-02 14:15:48 · 59 阅读 · 0 评论 -
leetcode:16.翻转二叉树 简单
class Solution { public TreeNode invertTree(TreeNode root) { if(root==null){ return null; } Queue<TreeNode> queue=new LinkedList<TreeNode>(); queue.add(root); while(!queue.isEmpty()){原创 2021-12-01 13:44:27 · 156 阅读 · 0 评论 -
leetcode:15.多数元素 简单
class Solution { public int majorityElement(int[] nums) { int count = 1; int maj = nums[0]; for (int i = 1; i < nums.length; i++) { if (maj == nums[i]) count++; else { count--; if (count == 0) { maj = nums[i + 1];原创 2021-12-01 10:15:07 · 58 阅读 · 0 评论 -
leetcode:14.相交链表 简单
public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { if (headA == null || headB == null) return null; ListNode A = headA, B = headB; // 当没有相交时循环 while (A != B) {原创 2021-12-01 10:03:13 · 167 阅读 · 0 评论 -
leetcode:13.最小栈 简单
class MinStack { private Stack<Integer> data; private Stack<Integer> minStack; /** initialize your data structure here. */ public MinStack() { data = new Stack(); minStack = new Stack(); } public void原创 2021-12-01 09:49:10 · 130 阅读 · 0 评论 -
leetcode:12.环形链表 简单
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){原创 2021-11-30 20:06:41 · 62 阅读 · 0 评论 -
leetcode:11.只出现一次的数字 简单
class Solution { public int singleNumber(int[] nums) { for (int i = 1; i <nums.length ; i++) { nums[0] = nums[0]^nums[i]; } return nums[0]; }}原创 2021-11-30 19:52:18 · 147 阅读 · 0 评论 -
leetcode:10.买卖股票的时机 简单
/** * 这玩意应该是贪心解法 * 设-1买入为无穷大 * 则第一天买入记为第一天的,当有比他小的时候,就买入,相当于原价卖了,再买入。 * 如果比他大,则卖出,切记录此时的利润(因为没有手续费,所以这里是假定卖出,如果有利润更大的存在,则卖出更大的利润 * 例如 2 5 9 则在2买入,5卖出 利润为3 ,因为在9卖出,利润为7,则相当于取消上次的交易) * */class Solution { public int maxProfit(int[] prices) {原创 2021-11-30 19:13:48 · 56 阅读 · 0 评论 -
leetcode:9.二叉树最大深度 简单
class Solution { int maxDepth=0; int i=1; public int maxDepth(TreeNode root) { if(root==null){ return 0; } int nleft = maxDepth(root.left); int nright = maxDepth(root.right); return nleft >原创 2021-11-30 17:09:01 · 143 阅读 · 0 评论 -
leetcode:8.对称二叉树 简单
class Solution { public boolean isSymmetric(TreeNode root) { if(root==null){ return true; } return check(root.left,root.right); } public boolean check(TreeNode node1,TreeNode node2){ if(node1==null&a原创 2021-11-30 17:01:00 · 163 阅读 · 0 评论 -
leetcode:7.二叉树的中序遍历 简单
class Solution { List<Integer> list=new ArrayList<>(); public List<Integer> inorderTraversal(TreeNode root) { if(root==null){ return list; } inorderTraversal(root.left); list.add(root.val)原创 2021-11-30 16:45:34 · 59 阅读 · 0 评论 -
leetcode:6.爬楼梯 简单
斐波那契数列class Solution { public int climbStairs(int n) { if (n == 0) { return 0; } if (n == 1) { return 1; } int first = 1; int second = 2; int temp = 0; for (int i = 3; i <= n; i++) { temp = first + second; first = sec原创 2021-11-30 16:26:30 · 60 阅读 · 0 评论 -
leetcode:5.合并两个有序链表 简单
class Solution { public ListNode mergeTwoLists(ListNode list1, ListNode list2) { if(list1==null&&list2==null){ return null; } if(list1==null){ return list2; } if(list2==null){原创 2021-11-30 15:58:53 · 60 阅读 · 0 评论 -
leetcode:4.有效的括号 简单
class Solution { public boolean isValid(String s) { Stack<Character> stack=new Stack(); for(int i=0;i<s.length();i++){ char t=s.charAt(i); if(t=='('||t=='{'||t=='['){ stack.push(t);原创 2021-11-30 15:42:10 · 64 阅读 · 0 评论 -
leetcode:3.合并两个有序数组 简单
class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int i=m-1,j=n-1,k=m+n-1; while (i>=0&&j>=0){ if(nums1[i]>nums2[j]){ nums1[k--]=nums1[i--]; }else {原创 2021-11-29 17:04:05 · 129 阅读 · 0 评论 -
leetcode:2.链表反转 简单
class Solution { public ListNode reverseList(ListNode head) { if(head==null||head.next==null){ return head; } ListNode temp=head.next; ListNode newHead=reverseList(head.next); temp.next=head;原创 2021-11-29 17:01:43 · 148 阅读 · 0 评论 -
leetcode:1.最长无重复子串 中等
class Solution { public int lengthOfLongestSubstring(String s) { Set<Character> set=new HashSet(); int right=-1; int maxlength=0; for(int i=0;i<s.length();i++){ if(i!=0){ set.remo原创 2021-11-29 16:58:45 · 55 阅读 · 0 评论