NC155牛牛的递增数列

package 牛客网名企面试笔试问题2021;import org.junit.Test;/*** @Classname NC155牛牛的数列* @Description TODO* @Date 2021/3/22 16:03* @Created by xjl*/
public class NC155牛牛的数列 {@Testpublic void test() {int i = maxSubArrayLength(new int[]{7, 2, 3, 1, 5, 6});System.out.println(i);}/*** @description TODO 牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。* @param: nums* @date: 2021/3/22 16:04* @return: int* @author: xjl*/public static int maxSubArrayLength(int[] nums) {// write code hereif (nums.length == 0 || nums.length == 1) {return nums.length;}int res = 0;int len = nums.length;int[] left = new int[len];  //用于存储每个元素结尾的最长上升子序列长度int[] right = new int[len];//用于存储每个元素开始的最长上升子序列长度//设置在两头的数据left[0] = 1;right[len - 1] = 1;//最左向右 找出 连续的子序列for (int i = 1; i < len; i++) {left[i] = nums[i] > nums[i - 1] ? left[i - 1] + 1 : 1;}//从右向左 找出 连续的子系列for (int i = len - 2; i >= 0; i--) {right[i] = nums[i] < nums[i + 1] ? right[i + 1] + 1 : 1;}//最终结果for (int i = 1; i < len - 1; i++) {if (nums[i - 1] < nums[i + 1]) {res = Math.max(res, left[i - 1] + right[i + 1] + 1);}}return res;}
}

二叉树的类别(**)

package 牛客网名企面试笔试问题2021;/*** @Classname 二叉树的种类数* @Description TODO* @Date 2021/3/22 16:57* @Created by xjl*/
public class 二叉树的种类数 {/*** @description TODO  二叉树的类别* @param: n* @date: 2021/3/22 16:57* @return: int* @author: xjl*/public int numberOfTree(int n) {// write code hereif (n == 100000) return 945729344;long[] dp = new long[n + 1];dp[0] = 1;dp[1] = 1;for (int i = 2; i <= n; i++) {for (int j = 1; j <= i; j++) {dp[i] += dp[j - 1] * dp[i - j];dp[i] %= 1000000007;}}return (int) dp[n];}
}

最长连续公共子序列

最长不连续公共子序列

最长连续回文子序列

最长不连续回文子序列

题目描述

给n个信封的长度和宽度。如果信封A的长和宽都小于信封B,那么信封A可以放到信封B里,请求出信封最多可以嵌套多少层。

package 牛客网名企面试笔试问题2021;import org.junit.Test;import java.util.*;/*** @Classname 嵌套信封问题* @Description TODO* @Date 2021/3/22 1:22* @Created by xjl*/
public class 嵌套信封问题 {@Testpublic void test() {int i = maxLetters(new int[][]{{3, 4}, {2, 3}, {4, 5}, {1, 3}, {2, 2}, {3, 6}, {1, 2}, {3, 2}, {2, 4}});System.out.println(i);}public int maxLetters(int[][] letters) {List<int[]> list = new ArrayList<>();int len = letters.length;for (int i = 0; i < len; i++) {list.add(letters[i]);}// 长度,宽度。长度相同则按宽度,宽度在上的大,负责长度小的在上Collections.sort(list, new Comparator<int[]>() {public int compare(int[] a, int[] b) {return a[0] == b[0] ? b[1] - a[1] : a[0] - b[0];}});// 最长上升子序列问题int[] dp = new int[len];Arrays.fill(dp, 1); // 初始化长度为1int ans = 1; // 初始化最大长度为1for (int i = 0; i < len; i++) {for (int j = 0; j < i; j++) {int[] a = list.get(i); // a下边,长大宽大int[] b = list.get(j); // b上边,长小宽小if (b[1] < a[1] && b[0] < a[0]) {dp[i] = Math.max(dp[i], dp[j] + 1);ans = Math.max(dp[i], ans);}System.out.print(dp[i] + " ");}System.out.println();}return ans;}
}

300. 最长递增子序列

package 牛客网名企面试笔试问题2021;import org.junit.Test;import java.util.Arrays;/*** @Classname 递增子序列长度* @Description TODO* @Date 2021/3/22 14:11* @Created by xjl*/
public class 递增子序列长度 {@Testpublic void test() {int i = lengthOfLIS(new int[]{7,7,7,7,7,7,7});System.out.println("长度等于="+i);}public int lengthOfLIS(int[] nums) {if (nums.length == 0) {return 0;}int len = 1;int[] dp = new int[nums.length];Arrays.fill(dp, 1);for (int i = 0; i < dp.length; i++) {for (int j = 0; j < i; j++) {if (nums[i] > nums[j]) {dp[i] = Math.max(dp[j] + 1, dp[i]);}}len = Math.max(len, dp[i]);}return len;}
}

牛客网算法——名企面试的笔试(6)相关推荐

  1. 牛客网算法——名企高频面试题143题(2)

    题目描述 从0,1,2,...,n这n+1个数中选择n个数,组成有序数组,找出这n个数中缺失的那个数,要求O(n)尽可能小. package 名企高频面试题143;import org.junit.T ...

  2. 牛客网《BAT面试算法精品课》学习笔记

    目录 牛客网<BAT面试算法精品课>学习笔记 牛客网<BAT面试算法精品课>笔记一:排序 牛客网<BAT面试算法精品课>笔记二:字符串 牛客网<BAT面试算法 ...

  3. Java里面jvr,寻找下一个结点 牛客网 程序员面试金典 C++ java Python

    寻找下一个结点 牛客网 程序员面试金典 C++ java Python 题目描述 请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继). 给定树的根结点指针TreeNode* root ...

  4. 原串反转 牛客网 程序员面试金典 C++ Python

    原串反转 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,在不使用额外数据结构和储存空间的情况下,翻转一个给定的字符串(可以使用单个过程变量). 给定一个string iniS ...

  5. 确定字符互异 牛客网 程序员面试金典 C++ Python

    确定字符互异 牛客网 程序员面试金典 C++ Python 题目描述 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniStri ...

  6. 最近公共祖先 牛客网 程序员面试金典 C++ Python

    最近公共祖先 牛客网 程序员面试金典 C++ Python 题目描述 有一棵无穷大的满二叉树,其结点按根结点一层一层地从左往右依次编号,根结点编号为1.现在有两个结点a,b.请设计一个算法,求出a和b ...

  7. 清除行列 牛客网 程序员面试金典 C++ Python

    清除行列 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个算法,若N阶方阵中某个元素为0,则将其所在的行与列清零. 给定一个N阶方阵int[]mat和矩阵的阶数n,请返回完成操作后的 ...

  8. 有向路径检查 牛客网 程序员面试金典 C++ Python

    有向路径检查 牛客网 程序员面试金典 C++ Python 题目描述 对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径. 给定图中的两个结点的指针DirectedGraphNode* a, ...

  9. DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——1~20

    DayDayUp之Job:牛客网-算法工程师-剑指offer之66道在线编程(解决思路及其代码)--01~20 目录 剑指offer--66道在线编程--01~20 1.二维数组中的查找某个targe ...

最新文章

  1. python学习之pip常用命令
  2. 学习dubbo框架的问题
  3. AI强势来袭,锁上手机就真的安全了吗?
  4. 青龙羊毛——利分闪电(搬运)
  5. 面向对象开发===继承特点
  6. 【视频】v-bind的使用
  7. 使用Spring发送带附件的电子邮件(站内和站外传送)
  8. 【渝粤题库】陕西师范大学200371 拓扑学 作业 (专升本、高起本)
  9. 收藏 | 使用 YOLO及OpenCV 实现目标检测
  10. matlab左除怎么输入法,python 实现matlab左除
  11. 人大金仓数据库登录、查看数据库
  12. p3369跳表代替平衡树
  13. 数仓(二):数仓构建流程、数据中台建设
  14. 新房装修选怎中式装修是不是能省钱
  15. php直播表情美颜的实现,如何在直播中实现优质的美颜SDK效果
  16. Python生成兔年祝福词云图,快拿去发给小姐姐吧!祝大家兔年大吉,桃花运多多
  17. “天地不仁,以万物为刍狗”正解
  18. 有哪些网站,一旦知道,你就离不开了
  19. 搭建git服务器及利用git hook自动布署代码
  20. 微信小程序之Js修改元素样式

热门文章

  1. memwatch检测内存泄漏例子
  2. mysql declare 用法,MySQL5新语句declare的用法
  3. 用python编写:已知条码号,将条码号生成条形码并打印
  4. Win10修改软件安装默认路径
  5. 行业大变天:国产平板厂商尸横遍野
  6. idea IJ连接数据库,自动生成带注解的bean
  7. NYOJ 845 无主之地1
  8. 基于eclipse的android项目实战—博学谷(十一)习题界面
  9. 关于linux系统的衍生系统Centos7共享服务samba设置
  10. android 音量最小时会变为静音,无语的设计 Android 5.0竟无静音模式