牛客网
童话ing
放弃不难,但坚持一定很酷。
展开
-
【牛客网】JZ47 礼物的最大价值
比较常规的动态规划题目,练练手,这题目从左上角走到右下角,用一个二维dp数组表示从(0,0)走到(n,m)获得的最大值,状态转移很容易得出。,注意dp数组的初始化,最上面一行和最左边一列。原创 2023-03-18 17:17:00 · 127 阅读 · 0 评论 -
【牛客网】 JZ48 最长不含重复字符的子字符串
这个题是比较容易想到two pointer(双指针)的,再加上hash标记一下区间内存在的元素即可,右指针会一直往后走,在遇到相同的元素时候,才开始让左指针走,直到走到没有重复为止。原创 2023-03-18 17:41:37 · 154 阅读 · 0 评论 -
【牛客网】JZ4 二维数组中的查找
传送门:JZ4 二维数组中的查找题目描述:思路:题目已经指出其中的数字按照行和列都是递增的,那么这题其实很容易想到对每行或者每列进行二分,这样的时间复杂度为O(N*logM),N和M就看二分的是行还是列了。题目要求的是线性时间的复杂度,显然这种方法不是最佳的,根据题目特性我们很容易想到进行线性扫描,我们可以从矩阵的右上角或者左下角进行扫描,因为在右上角时候我们能确定当前行的最大值,当前列的最小值;而在左下角时候我们能确定当前行的最小值,列的最大值,便于扫描的进行。整个线性扫描时间复杂度为O(M+N)..原创 2022-06-29 21:13:07 · 309 阅读 · 0 评论 -
【牛客网】链表区间反转
题目链接:BM2 链表内指定区间反转题目描述:思路:思路很简单,先定义一个指针,让它走m-1步到第m-1个的位置,然后反转 [m, n]区间内的链表,将其接到前半段中就可以了。代码·:package mainimport . "nc_tools"/* * type ListNode struct{ * Val int * Next *ListNode * } *//** * * @param head ListNode类 * @param m int整型原创 2022-05-21 21:50:35 · 442 阅读 · 1 评论 -
【牛客网】牛客练习赛67(A-D题解)
题目链接:牛客练习赛67A:牛牛爱字符串思路:直接模拟就可以了,但是字符串特别长,如果使用整形数组存数字,最终存不下。方案就是继续象存字符串一样存数字,由于是用的Java,所以可以直接使用BigInteger。代码:import java.util.Scanner;import java.math.BigInteger;public class Main{ public static void main(String[] args){ Scanner cin=new Sc原创 2022-04-12 15:02:42 · 436 阅读 · 0 评论 -
【牛客网】NC149 kmp算法
题目链接:NC149 kmp算法题目描述:思路:KMP的板子题目,主要是next数组的理解和求法,当成模板理解记忆吧。代码:import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 计算模板串S在文本串T中出现了多少次 * @param S string字符串 模板串 * @param T string字符原创 2022-03-25 21:01:43 · 1019 阅读 · 0 评论 -
【笔试】虾皮2022秋招提前批SER笔试
1、重排字符串和数字思路:就按照题目要求来写就好了,有一点需要注意的是,再对数字排序时候要考虑最极端的情况可能出现100位左右的数字,这个只能String存了,看到别人Long也过了,但应该是数据不严。排序时候由于是String,因此重新定义排序规则。代码:import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @par原创 2022-03-02 16:23:36 · 590 阅读 · 0 评论 -
【NewCoder】NC50 链表中的节点每k个一组翻转
题目链接:NC50 链表中的节点每k个一组翻转思路:每遍历k个就记录一下,对这k个节点进行反转,然后添加到答案中,注意答案中的指针时刻指向末尾,以及最后没有k个的直接添加到答案中。import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } */public class Solution { /** * * @param head Li原创 2021-11-18 10:27:14 · 367 阅读 · 0 评论 -
【NewCoder】NC37 合并区间
题目链接:NC37 合并区间题目描述:思路:很简单,想法就是先对区间进行排序之后,再挨个判断,如果当前区间和上一个区间相交,那么那么进行区间修改,否则记录答案。import java.util.*;/** * Definition for an interval. * public class Interval { * int start; * int end; * Interval() { start = 0; end = 0; } * Interva原创 2021-11-16 16:15:25 · 205 阅读 · 0 评论 -
【NewCoder】NC111 最大数
题目链接:NC111 最大数思路:对这些数进行降序排序即可组成答案,需要知道的是,这里的降序是字符串的降序并且不单指的是两个字符串分开的降序,而是拼接之后的降序,两个字符串之间比较大小的是比较每一个字符的大小,遇到第一个不相等的字符则会根据其ASCII码来比较大小,我们都知道整型数字越大,ASCII码也越大,所以我们只需要比较A+B跟B+A之间的大小,将数组按照这个规则去排序,就可以得到我们想要的结果了。代码:import java.util.*;public class Solution {原创 2021-11-16 15:17:47 · 330 阅读 · 0 评论 -
【NewCoder】NC70 单链表的排序
题目链接:NC70 单链表的排序简单单链表排序,简单的题解就不写了,用辅助空间记录其中元素值,对val排序之后在进行链表链接。这里采用的归并排序的方式进行单链表的排序,和数组归并一样,也是先找到链表中点,然后不停划分子链表,直到每个子链表为一个元素后开始进行两两合并。代码:import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } */public class原创 2021-11-15 15:05:31 · 487 阅读 · 0 评论 -
【NewCoder】NC96 判断一个链表是否为回文结构
题目链接:NC96 判断一个链表是否为回文结构这个题有趣就有趣在学会用快慢指针确定单链表中间位置,其余思路都很常规,先来看看空间O(n)的解法。首先很容易想到,记录链表前半段,再和后半段进行比较,主要难点就是确定链表前半段元素了,采用快慢指针方式,快指针fast走2步,慢指针slow走1步,当fast走到尽头时候,慢指针已经在后半段(链表长度为偶数)或正中间位置了(链表长度为奇数),此时只需要慢指针继续走,和记录的元素进行比较即可判定。代码:import java.util.*;/* * p原创 2021-11-14 12:25:46 · 459 阅读 · 0 评论 -
【牛客网】SQL26 计算25岁以上和以下的用户数量
题目链接:SQL26 计算25岁以上和以下的用户数量题目描述:方法1:IF语句SELECTage_cut,count(*)numberFROM(SELECT IF(age>=25,"25岁及以上","25岁以下")age_cut from user_profile)as temGROUP BY age_cut;方法2:CASE WHEN用法为:CASE 测试表达式WHEN 简单表达式1 THEN 结果表达式1WHEN 简单表达式2 THEN 结果表达式2 …WHEN 简原创 2021-11-03 20:24:05 · 475 阅读 · 0 评论 -
【牛客网】NC102 在二叉树中找到两个节点的最近公共祖先
题目链接:NC102 在二叉树中找到两个节点的最近公共祖先题目描述:所以节点值为5和节点值为1的节点的最近公共祖先节点的节点值为3,所以对应的输出为3。思路:BFS搜索树,搜索到两个结点过程中用map记录每个结点的父结点,方便找到两个结点之后往回找。找到了两个结点之后我们先将o1的祖先记录下来,再利用o2往上找其祖先结点,找到的第一个共同结点就是LCA(最近公共祖先)。代码:import java.util.*;/* * public class TreeNode { * int v原创 2021-11-02 21:37:17 · 203 阅读 · 0 评论 -
【牛客网】NC41 最长无重复子数组
题目链接:NC41 最长无重复子数组题目描述:思路:双指针+hash,利用hash标记每个元素出现的情况,双指针维护窗口的大小,注意缩小窗口时需要移除掉相应位置的标记。import java.util.*;public class Solution { /** * * @param arr int整型一维数组 the array * @return int整型 */ public int maxLength (int[] arr) {原创 2021-11-02 20:50:20 · 182 阅读 · 0 评论 -
【NowCoder】NC15 求二叉树的层序遍历
题目链接:NC15 求二叉树的层序遍历给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树层序遍历的结果是:[[3],[9,20],[15,7]]数据范围:0 <= 二叉树的结点数 <= 1500二叉树层次遍历借助队列能很好实现,这里只需要记录一下下一层的最后一个结点即可。import java.util.*;/* * public class TreeNode { * int val原创 2021-10-31 11:36:36 · 128 阅读 · 0 评论