NC
冷酷的摸鱼小将
这个作者很懒,什么都没留下…
展开
-
NC78 反转链表
描述给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: 0\leq n\leq10000≤n≤1000要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n) 。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:示例输入:{1,2,3}返回值:{3,2,1}输入:{}返回值:{}说明:空链表则输出空方法1J原创 2022-02-11 15:40:25 · 361 阅读 · 0 评论 -
NC11 将升序数组转化为平衡二叉搜索树
描述给定一个升序排序的数组,将其转化为平衡二叉搜索树(BST).平衡二叉搜索树指树上每个节点 node 都满足左子树中所有节点的的值都小于 node 的值,右子树中所有节点的值都大于 node 的值,并且左右子树的节点数量之差不大于1数据范围:0 \le n \le 100000≤n≤10000,数组中每个值满足 |val| \le 5000∣val∣≤5000进阶:空间复杂度 O(n)O(n) ,时间复杂度 O(n)O(n)例如当输入的升序数组为[-1,0,1,2]时,转化后的平衡二叉搜索树(B原创 2022-02-11 15:34:31 · 71 阅读 · 0 评论 -
NC81 二叉搜索树的第k个结点
和力扣的230很相似,不过230是返回val值,这道题是返回结点 喵!方法11、利用BST的性质,中序遍历为升序。2、定义全局的 count(用于计数) 和 res结点(用于接收结点)3、定义新方法实现中序遍历,如果遍历到第k个则将该结点赋给 res结点。java实现:public class Solution { TreeNode KthNode(TreeNode pRoot, int k) { //base case //if (pRoot==null原创 2021-10-17 10:50:45 · 74 阅读 · 0 评论 -
NC62 平衡二叉树
方法1:1、这道题用后序遍历。2、分别计算某结点的左子树和右子树的度,判断是否满足平衡二叉树平衡的定义。3、写一个方法计算结点度。之前一直疑惑为什么有的遍历直接调用,没有返回值。今天终于发现了,是因为递归调用的方法没有返回值。(手动微笑)invertTree(root.left);invertTree(root.right);这道题,因为递归调用的方法是布尔型,所以是有 true和false的返回值的,要判断一下。Java实现:public class Solution { p原创 2021-10-17 09:57:28 · 78 阅读 · 0 评论 -
NC13 二叉树的最大深度
方法1:python莫名其妙做对了。。本人还处于懵逼阶段,好像悟了,又好像没悟 喵呜不过代码不是很简洁 喵呜class Solution: def maxDepth(self , root ): # write code here #base case if root==None: return 0 def cnt(root): if root==None: return 0原创 2021-10-16 11:11:58 · 63 阅读 · 0 评论 -
NC29 二维数组中的查找
方法1:python每行用二分法查找喵~找到了就return True,没找到接着下一行找~今天居然在python里面打出了{}!!我有罪!class Solution: def Find(self , target: int, array: List[List[int]]) -> bool: # write code here row=len(array) col=len(array[0]) mid,flag=0,0原创 2021-10-16 10:48:41 · 120 阅读 · 0 评论 -
NC30 缺失的第一个正整数
和力扣的41题一毛一样喵~不过在力扣里面是困难题,牛客里是中等题喵呜~方法1:python先排序,排序后拿flag去对标。感觉属于数学上的方法~class Solution: def minNumberDisappeared(self , nums: List[int]) -> int: # write code here flag=1 nums.sort() for num in nums: i原创 2021-10-16 10:05:54 · 79 阅读 · 0 评论 -
NC12 重建二叉树
和力扣的105题一样~果然,做了的题是会忘记的,虽然依稀还能记住一点儿。思路:#递归base:当prestart>preend跳出递归~1、从前序里找根,从中序里找根对应的索引。2、找到每次左、右子树的起始和终点。3、递归建立左右子树。方法1:javapublic class Solution { public TreeNode reConstructBinaryTree(int [] pre,int [] vin) { return build(pre,0,原创 2021-10-15 19:14:37 · 50 阅读 · 0 评论 -
NC18 顺时针旋转矩阵
和力扣的48题一样~方法1python沿对角线翻转后~每行倒转要注意对角线翻转时的循环!!第二个循环不能为0~n因为会翻转回去。class Solution: def rotateMatrix(self , mat: List[List[int]], n: int) -> List[List[int]]: # write code here # 先对角线翻转喵~像这样:\ for i in range(n): fo原创 2021-10-15 16:17:11 · 298 阅读 · 0 评论 -
NC41 最长无重复子数组
方法1:python强行双指针遍历的话会超时55~发现自己python学的像坨屎 很忧伤假设数据[1,2,3,4,2,3] 读到[1,2,3,4],此时新的数据应该为[3,4,2]。class Solution: def maxLength(self , arr ): # write code here res=list() maxnum=0 for num in arr: if nu原创 2021-10-15 14:47:49 · 122 阅读 · 0 评论 -
NC77 调整数组顺序使奇数位于偶数前面(一)
方法1:java学到了List转int数组的方法~喵~import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 * @return int整型一维数组 */ public int[] reOrderArray (int[] array) {原创 2021-10-14 21:09:49 · 175 阅读 · 0 评论 -
NC531 递增数组
方法1:java严格单调递增没有等号。只考虑非递增的,不考虑递增的。Java要注意各种溢出。。import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param array int整型一维数组 array * @return long长整型 */ public long Increasin原创 2021-10-14 16:16:29 · 64 阅读 · 0 评论 -
NC507 那些插队的人
方法1:java先找到插队者的位置(索引下标)然后用冒泡给它排上去~import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算有多少个人最终不在自己原来的位置上 * @param n int整型 队伍总长 * @param cutIn int整型一维数组 依次会插队到最前方的人的编号 * @return原创 2021-10-14 15:23:49 · 46 阅读 · 0 评论 -
NC501 牛牛的消消乐
方法1:java1、首先对数组进行排序,使之成为递增顺序。求一个数组的和sum,然后就是找到sum要减去的最大值。这个最大值就是进行两次操作的时候要减去的数的总和。2、因为数组是递增次数,因此我们如果要减去的元素是nums[ i ],那么从下标 i 到下标n-1全部都可以减去。减去的部分就是 nums[ i ] * (n-i),因此我们可以遍历每个元素,减去1个之后,再对其排序再遍历减去第二个元素,找到能够减去的最大值。3、最后sum减去最大值就是所求结果。这里涉及一个Java数组的拷贝。如原创 2021-10-14 14:50:00 · 146 阅读 · 0 评论 -
NC106 三个数的最大乘积
和力扣的682题目一样。但是输入的值范围不同。LC是-1000 <= nums[i] <= 1000NC是-10000<=A[i]<=10000因此NC上用java的话会有溢出的可能~方法1:java先排序~3种可能,数组全正、全负、有正有负。全正、全负: long)A[n]*A[n-1]*A[n-2]有正有负:(long)A[0]*A[1]*A[n])import java.util.*;public class Solution { /**原创 2021-10-13 11:20:08 · 94 阅读 · 0 评论 -
NC73 数组中出现次数超过一半的数字
方法1:java用到了Map~HashMap 和 Map 的区别是,hash是去重且不能对value进行操作。import java.util.*;public class Solution { public int MoreThanHalfNum_Solution(int [] array) { Map<Integer,Integer> map = new HashMap<>(); for (int i=0; i&l原创 2021-10-13 10:40:45 · 63 阅读 · 0 评论 -
NC74 数字在升序数组中出现的次数
方法1:java暴力yydspublic class Solution { public int GetNumberOfK(int [] array , int k) { int flag=0; for (int num : array){ if (num==k) flag++; } return flag; }}方法2:java二分法芜湖。就是要注意一些值设的初始值~pu原创 2021-10-13 10:23:50 · 67 阅读 · 0 评论 -
NC61 两数之和
实现方法1:java题不难,就是有点坑,题目要求下标从1开始。额(⊙﹏⊙)import java.util.*;public class Solution { /** * * @param numbers int整型一维数组 * @param target int整型 * @return int整型一维数组 */ public int[] twoSum (int[] numbers, int target) {原创 2021-10-13 09:53:50 · 46 阅读 · 0 评论 -
NC7 买卖股票的最好时机
实现方法1:java贪心算法,从左往右遍历向量,遇到当前最小值,则保存,如果不是最小值,则计算它到最小值的距离,保存为最大利润import java.util.*;public class Solution { /** * * @param prices int整型一维数组 * @return int整型 */ public int maxProfit (int[] prices) { // write code he原创 2021-10-13 09:41:27 · 54 阅读 · 0 评论 -
NC22 合并两个有序的数组
实现方法1:javaimport需要自己写。排序方法: Arrays.sort()import java.util.*;public class Solution { public void merge(int A[], int m, int B[], int n) { int a = A.length-B.length; int b = B.length; int k = 0; for (int i=a; i<A.le原创 2021-10-12 18:35:41 · 60 阅读 · 0 评论 -
NC38 螺旋矩阵
实现方法1:Java和力扣的54一摸一样,除了需要考虑[]的输入。1、List初始化import java.util.ArrayList;import java.util.List;ArrayList list = new ArrayList<>();2、二维数组判断是否为空:横1竖0if((arraynull || array.length0) || (array.length1 && array[0].length0))3、判断[]if (m原创 2021-10-11 23:41:53 · 167 阅读 · 0 评论 -
NC107 寻找峰值
实现方法1:java首尾分别考虑。import java.util.*;public class Solution { /** * 寻找最后的山峰 * @param a int整型一维数组 * @return int整型 */ public int solve (int[] a) { // write code here int flag1=-1; //不考虑首、尾原创 2021-10-11 20:49:36 · 79 阅读 · 0 评论 -
NC101 缺失数字
实现输入n,观察n+1个数。缺失一个数,有两种情况。可能是n之内的数,有可能是n+1。import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 找缺失数字 * @param a int整型一维数组 给定的数字串 * @return int整型 */ public int solve (int[] a原创 2021-10-11 17:50:29 · 90 阅读 · 0 评论 -
NC65 斐波那契数列
实现方法1:javapublic class Solution { public int Fibonacci(int n) { if (n==1 || n==2){ return 1; }else{ return Fibonacci(n-1) + Fibonacci(n-2); } }}原创 2021-10-11 17:47:00 · 56 阅读 · 0 评论