
【LeetCode】C不lucky
力扣刷题
草莓味的c
你喜欢吃橙子吗?
展开
-
【LeetCode No.136】Java 只出现一次的数字
题目描述题目要求的是,线性时间复杂度和常数空间复杂度要考虑使用位运算。异或运算:public class CountOne { public static int singleNumber(int[] nums) { int single = 0; for (int num : nums){ single ^= num; } return single; } public static原创 2022-04-12 16:57:17 · 835 阅读 · 0 评论 -
【LeetCode No.121】Java 买卖股票的最佳时机
题目描述第一眼看到这道题,就想到了暴力破解,但是看这个范围,1 <= prices.length <= 10^5 ,两层 for 肯定超时int profit = 0; for (int buy = 0; buy < prices.length; buy++){ for (int sale = buy+1; sale < prices.length; sale++){ if (prices[buy] <原创 2022-04-11 11:42:16 · 1124 阅读 · 0 评论 -
【LeetCode No.108】Java 将有序数组转换为二叉搜索树
题目描述二叉搜索树形状还得是高度平衡的二叉搜索树,也就是说每个结点的左子树和右子树高度差<=1对于一个升序的数组,选择它的中间元素作为根节点即可保证是一个平衡的树创建这棵树的过程就是递归找根结点的过程package leetCode;public class ToBST { public static TreeNode sortedArrayToBST(int[] nums) { return searchRoot(nums, 0, nums.length-1原创 2022-04-10 21:29:43 · 1126 阅读 · 0 评论 -
【LeetCode No.88】Java 合并两个有序数组
题目描述当时想的很简单 就把num2 复制到 num1 的后面,再对 num1 排序 for (int i = 0; i < n; i++){ nums1[m+i] = nums2[i]; } Arrays.sort(nums1);sort 的实现其实是快排,时间复杂度是 O((m+n)log(m+n))虽然通过了,但结果不尽人意再来看第二种方法,这种就是先使用 num1 后面空的位置,比较两个数组的元素大小,再放进 num1 的空位,这样得到的新的num1 是有序的原创 2022-04-09 21:51:25 · 832 阅读 · 0 评论 -
【LeetCode No.66】 Java 加一
题目描述刚开始读题没读明白,原来数组里边每个数只能是 0-9 之间,没认真读题import java.util.Arrays;public class PlusOne { public static int[] plusOne(int[] digits) { for (int i = digits.length - 1; i >= 0; i--){ if (digits[i] < 9){ ++digits[原创 2022-04-08 15:34:57 · 576 阅读 · 0 评论 -
【LeetCode No.53】 Java 最大子数组和
题目描述看的别人的题解找的思路【flag : 贪心和动态规划】public class MaxSum { /* 在整数数组中,找一个具有最大和的连续子数组,返回这个和 */ public static int maxSubArray(int[] nums) { int ans = nums[0]; int sum = 0; for (int x : nums){ if (sum <= 0)原创 2022-04-07 18:16:10 · 508 阅读 · 0 评论 -
【LeetCode No.1】Java 两数之和
题目:两数之和想当然的,法一:暴力破解public static int[] getIndexs(int[] arr, int target){ int[] indexs = new int[2]; for (int i = 0; i < arr.length-1; i++){ //因为是两个数相加,第一次循环没必要循环到最后一个数,到倒数第二个就行了,所以是 length-1 for (int j = i+1; j <原创 2022-04-04 12:20:53 · 173 阅读 · 0 评论 -
【LeetCode No.35】Java 搜索插入位置
题目描述题目要求 O(log n) 的复杂度,第一反应就是 二分查找 这没问题这道题和普通的二分查找感觉没有区别public class SearchTarget { /* nums 是升序数组,从里边找 target 如果在 nums 里,返回索引 如果不在,返回按顺序插入的位置 必须使用 O(log n) 的算法,二分查找呗? */ public static int searchInsert(int[] nums, int target原创 2022-04-06 16:17:55 · 288 阅读 · 0 评论 -
【LeetCode No.27】Java 移除元素
题目描述这道题的要求和26题很像,所以第一反应就是采用双指针的写法思路是没问题的,就是在写的时候有些语句冗余public class DeleteEquals { public static int removeElement(int[] nums, int val) {// if (nums.length == 0){// return 0;// }// if (nums.length == 1 &&原创 2022-04-05 16:17:26 · 325 阅读 · 1 评论 -
【LeetCode No.26】Java 删除有序数组中的重复项
题目描述官方视频已经讲的很清楚了不使用额外的空间,原地修改数组给的是已经排好序的数组,那么相邻两个数如果不相等,那就可以判断下一组相邻的数是否相等了如果相等,就要考虑下一个数和这个数是否还相等临界条件自然是 fast 不能超过数组的长度,返回的不重复的数的个数,因为slow 是从0 开始,所以应该是返回 slow+1public int removeDuplicates(int[] nums) { if (nums.length == 0){ retur原创 2022-04-04 22:06:44 · 411 阅读 · 0 评论