牛客算法小题
目录
牛客.求和编辑
牛客.abb
牛客.合并k个有序链表
牛客.滑雪(暴力->递归->记忆化搜索)
牛客.旋转字符串
牛客.求和
我没想到是dfs,另外我的dfs能力确实也不强,另外难度大的是他的那个输出
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {static int m;static int n;//用来标记路径中选择了谁static boolean[]choose=new boolean[11];//标记总和static int sum=0;public static void dfs(int x){if(sum==m){for(int i=1;i<=n;i++){if(choose[i]){System.out.print(i+ " ");}}System.out.println("");return;}if(sum>m||x>n) return;//选择x或者不选择xsum+=x;
//标记已经选择choose[x]=true;dfs(x+1);choose[x]=false;sum-=x;//假如不选择x,对任何东西都没有影响dfs(x+1);}public static void main(String[] args) {Scanner in = new Scanner(System.in);n=in.nextInt();m=in.nextInt();//从1开始dfs(1);}
}

所以解法:采用如果两个相同,视为一个位置
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param str string字符串 * @return string字符串ArrayList*/boolean[]vis;char[]s;ArrayList<String>m=new ArrayList<>();int n=0;StringBuffer p=new StringBuffer();public void dfs(int pos){if(pos==n){m.add(p.toString());return ;}for(int i=0;i<n;i++){if(vis[i]==true){continue;}if(i>0&&s[i]==s[i-1]&&vis[i-1]==true){continue;}p.append(s[i]);vis[i]=true;dfs(pos+1);vis[i]=false;p.deleteCharAt(p.length()-1);}}public ArrayList<String> Permutation (String str) {n=str.length();vis=new boolean[n];s=str.toCharArray(); Arrays.sort(s);dfs(0); return m;} }
牛客.abb

解法:动态规划+哈希表(子序列问题)
1.状态表示:
dp[i]:以i位置为结尾的子序列中,有多少个_xx
2.返回值:
整张dp表的和
3.状态转移方程:
dp[i]=f[x]:应该是更新前的f[x],因为我们要统计多少个_xx应该是前面有多少个_x
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n=in.nextInt();String aa=in.next();char[]a=aa.toCharArray();int []f=new int[26];int []g=new int[26];long ret=0;for(int i=0;i<n;i++){ret+=f[a[i]-'a'];f[a[i]-'a']=f[a[i]-'a']+i-g[a[i]-'a'];g[a[i]-'a']=g[a[i]-'a']+1;}System.out.print(ret);} }
牛客.合并k个有序链表


import java.util.*;/*
// * public class ListNode {
// * int val;
// * ListNode next = null;
// * public ListNode(int val) {
// * this.val = val;
// * }
// * }
// */public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param lists ListNode类ArrayList * @return ListNode类*/public ListNode mergeKLists (ArrayList<ListNode> lists) {int n=lists.size();if(n==0||(n==1&&lists.get(0)==null)||(n==2&&lists.get(0)==null&&lists.get(1)==null)){return new ListNode(0).next;}PriorityQueue <Integer> q=new PriorityQueue<>();for(int i=0;i<lists.size();i++){ ListNode a=lists.get(i);while(a!=null){q.add(a.val);a=a.next;}} ListNode p=new ListNode(q.poll());ListNode head=p;while(!q.isEmpty()){p.next=new ListNode(q.poll());p=p.next;}return head;}
}
牛客.滑雪(暴力->递归->记忆化搜索)


单纯的dfs,没有记忆化
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {static int n = 0;static int m = 0;static int [][]arr=new int[101][101];static int[]dx={0,0,1,-1};static int[]dy={1,-1,0,0};public static int dfs(int p1,int p2){int len=1;for(int i=0;i<4;i++){int x=p1+dx[i];int y=p2+dy[i];if(x>=0&&x<n&&y>=0&&y<m&&arr[x][y]<arr[p1][p2]){//四种情况下点最大值len=Math.max(len,dfs(x,y)+1);}}return len;}public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();m = in.nextInt();arr=new int[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++){arr[i][j]=in.nextInt();}}int ret=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){ret=Math.max(ret,dfs(i,j));}}System.out.print(ret);}
}
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {static int n = 0;static int m = 0;static int [][]arr=new int[101][101];static int[]dx={0,0,1,-1};static int[]dy={1,-1,0,0};
//使用dp表来保存 从区域出发最长递减子序列static int[][]dp=new int[101][101]; public static int dfs(int p1,int p2){if(dp[p1][p2]!=0){
//因为最短的长度是1,所以无需初始化。dp[p1][p2]有值return dp[p1][p2];}int len=1;for(int i=0;i<4;i++){int x=p1+dx[i];int y=p2+dy[i];if(x>=0&&x<n&&y>=0&&y<m&&arr[x][y]<arr[p1][p2]){//四种情况下点最大值len=Math.max(len,dfs(x,y)+1);}}//这里dfs走过之后,再dp[p1][p2]存储当前位置的最长递减子序列dp[p1][p2]=len;return len;}public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();m = in.nextInt();arr=new int[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++){arr[i][j]=in.nextInt();}}int ret=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){ret=Math.max(ret,dfs(i,j));}}System.out.print(ret);}
}
牛客.旋转字符串

解法:规律+接口
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** 旋转字符串* @param A string字符串* @param B string字符串* @return bool布尔型*/public boolean solve (String A, String B) {if (A.length() != B.length()) {return false;} else if (A.equals(B)) {return true;}return (A + A).contains(B);} }
相关文章:
牛客算法小题
目录 牛客.求和编辑 牛客.abb 牛客.合并k个有序链表 牛客.滑雪(暴力->递归->记忆化搜索) 牛客.旋转字符串 牛客.求和 我没想到是dfs,另外我的dfs能力确实也不强,另外难度大的是他的那个输出 import java.util.Scanne…...
小米SU7销量超特斯拉,新车明年上半年发布
小米 SU7,一款国内新能源车品牌纯血新势力旗下首款轿车,上市短短 4 个月卖出超 4 万台,月均销量过万。 该说不说,这放在整个新能源汽车工业史上也足以称得上是一件小刀喇拍屁股,让人开了眼的事儿。 就在本月初&#x…...
基于Java语言的光伏监控系统+光伏发电预测+光伏项目+光伏运维+光伏储能项目
基于Java语言的光伏监控系统光伏发电预测光伏项目光伏运维光伏储能项目 介绍 基于Java语言的光伏监控系统光伏发电系统光伏软件系统光伏监控系统源码光伏发电系统源码 基于Java语言的光伏监控系统光伏发电预测光伏项目光伏运维光伏储能项目 安装教程...
unity json 处理
1. c#对象 -> json public class Item {public int id;public int num;public Item(int id, int num){this.id id;this.num num;} } public class PlayerInfo {public string name;public int atk;public int def;public float moveSpeed;public double roundSpeed;publi…...
如何使用DataGear零编码快速制作MQTT物联网实时数据看板
DataGear是一个开源免费的数据可视化分析平台,企业版在开源版基础上开发,新增了诸多企业级特性,包括:MySQL及更多部署数据库支持、MQTT/WebSocket/Redis/MongoDB数据集、OAuth2.0/CAS/JWT/LDAP统一登录支持、前后端敏感信息加密传…...
Mysql查询日志
Mysql查询日志 Mysql查询日志默认是关闭状态的。 mysql> show variables like %general_log%; --------------------------------------- | Variable_name | Value | --------------------------------------- | general_log | OFF …...
Airtest 的使用
Airtest 介绍 Airtest Project 是网易游戏推出的一款自动化测试框架,其项目由以下几个部分构成 Airtest : 一个跨平台的,基于图像识别的 UI 自动化测试框架,适用于游戏和 App , 支持 Windows, Android 和 iOS 平台,…...
Android更改包名和签名
一、更改包名 1、包名——鼠标右键——Refactor——Rename 修改自己想更改的包名和选择更改范围后点击Refactor就可以了 2.手动修改app的build.gradle文件中的applicationId(改成和我们之前修改的包名相同) 3.修改AndroidManifest.xml文件中的packag…...
tortoisegit下载及其使用流程
下载 官方下载链接:Download – TortoiseGit – Windows Shell Interface to Git 选择适合自己的电脑位数的版本:一般64的兼容32的 按照就不介绍了怎么开心怎么来,本篇暂时为了支持一位粉丝的疑惑 安装的话没有特殊配置暂不介绍,…...
Anrdoir 13 关于设置静态IP后,突然断电,在上电开机卡动画
bug描述:设置静态IP成功后,机器突然断电,然后在上电开机,发现机器一直卡在开机动画,无法成功进入桌面 第一时间抓取日志分析,Log如下: 08-13 11:26:42.455 2803 2803 I EthernetServiceImpl: Starting Ethernet service 08-13 11:26:42.457 2803 2924 D ConnectivityServ…...
multimodel ocr dataset
InternLM-XComposer2-4KHD InternLM-XComposer2-4KHD a light-weight Vision Encoder OpenAI ViT-Large/14Large Language Model InternLM2-7B, 这篇论文采用的是一种动态分辨率的输入; 全图有一个global view,resize到336*336; 然后把图片resize再pad…...
兼容并蓄,高效集成:EasyCVR视频综合接入能力助力多元化项目需求
随着视频技术的不断进步,视频监控、视频直播、执法记录仪、语音可视对讲、无人机等视频资源的应用场景日益丰富。这些视频资源不仅在数量上快速增长,而且在质量、格式、编码标准等方面也呈现出多样化的特点。因此,为了有效整合这些资源&#…...
linux 部署YUM仓库及NFS共享服务
目录 简介 一、YUM仓库服务 1.1 YUM概述 1.2 linux系统各家厂家用的安装源 1.3 yum命令 1.4 yum下载方式 1.5 部署YUM软件仓库 二、NFS共享存储服务 2.1 NFS共享存储服务概念 2.2 NFS配置环境 2.3 使用NFS发布共享资源 2.4 在客户端访问NFS共享 简介 yumÿ…...
LCD 显示字符
1.0 字符显示 使用显示图片的方式显示字符会浪费存储空间,显示字符的时候字符的笔画是一个固定的颜色,因此不用使用显示图片的方式,可以使用1 表示字符的本身,0 表示字符的背景,使用这种方式显示字符节省存储空间。 注…...
NOI2003 逃学的小孩 题解
NOI2003 逃学的小孩 题解 传送门。 题目简述 给定一棵树 T T T,需要选择三个点 A , B , C A,B,C A,B,C,需要从 C C C 走到 A , B A,B A,B 的最远距离。 (第一段题目是在讲剧情吗。。) 前置知识 图树树的直径 思路简…...
硬件服务器操作系统的选择:Linux 还是 Windows?
在这个科技日新月异的时代,云服务器虽然日益普及,但硬件服务器依然是众多云服务和数据中心不可或缺的基石。有趣的是,随着云服务器的兴起,不少工程师竟然未曾亲眼见过实体的硬件服务器。然而,事实是,无论是…...
dataV组件使用——数据更新更新组件
bug 当数据更新只更新一个属性页面不会刷新(this.config1.data arr;) 必须重新赋值整个config 方式一:检测到数据更新重新赋值config this.config1 {data: arr,header: ["所在单位", "人员姓名", "职位", &q…...
solana合约编写
文章目录 solana 合约编写整体思路Cargo.toml配置代码实现在 Solana 智能合约中,定义和管理可能的错误类型自定义一个 Solana 账户结构一个帐户的约束条件什么是bump账号获取指令参数编码基础常用总结format! 格式化字符串Option<String>Vec<u8>编译部署到localne…...
C++调用C#方法(附踩坑点)
C调用C#方法 写在前面效果思路步骤可能的问题 写在后面 写在前面 工作需要用C调用C#写到代码,看来网上写的方法,自己也踩了一些坑,这里总结一下,我只试了CLR的方法。 主要参考了下面几篇博客 C调用C#库简单例程(Lucky…...
开源前端埋点监控插件Web-Tracing
Web-Tracing是一款专为前端项目设计的前端监控插件,它基于JavaScript设计,兼容跨平台使用,并提供了全方位的监控功能。 开源地址:https://gitee.com/junluoyu/web-tracing-analysis 以下是关于Web-Tracing的详细介绍:…...
Xbox Game Pass存档提取终极指南:3步实现跨平台游戏进度无缝迁移
Xbox Game Pass存档提取终极指南:3步实现跨平台游戏进度无缝迁移 【免费下载链接】XGP-save-extractor Python script to extract savefiles out of Xbox Game Pass for PC games 项目地址: https://gitcode.com/gh_mirrors/xg/XGP-save-extractor 对于使用X…...
[开源工具]问题解决指南:Axure本地化方案的效率提升实践
[开源工具]问题解决指南:Axure本地化方案的效率提升实践 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 作为原型设计…...
实战演练:在快马平台标准化java环境中构建并部署一个留言板应用
实战演练:在快马平台标准化Java环境中构建并部署一个留言板应用 最近在做一个Java Web项目的原型开发时,发现环境配置总是最耗时的环节。特别是团队协作时,每个人的JDK版本、依赖管理工具都可能不同,导致"在我机器上能跑&qu…...
从毫安预警到安培计量:芯森电子FR系列传感器在储能安全与管理中的协同应用
摘要在储能系统(ESS)的安全架构中,电流传感器不仅是计量工具,更是系统的“免疫细胞”。随着储能系统向高压化、数字化演进,单一的电流检测方案已无法满足从“微小漏电预警”到“电池主回路控制”的全栈需求。本文基于芯…...
OpenCore Legacy Patcher深度指南:老旧Intel Mac的系统升级解决方案
OpenCore Legacy Patcher深度指南:老旧Intel Mac的系统升级解决方案 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一…...
Flac3d6.0源代码(含巷道开挖、支护与充填开采三组代码)直接导入运行版,附汉语注释说明
Flac3d6.0源代码,用于巷道支护,煤层开采和充填,代码可直接导入运行,并有汉语注释说明每句代码含义,适合初学者用来学习。 直接联系。 包含三组代码: (1)巷道开挖:研究巷道…...
暗黑破坏神2存档编辑器:3分钟学会可视化存档修改
暗黑破坏神2存档编辑器:3分钟学会可视化存档修改 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为复杂的十六进制编辑而烦恼吗?d2s-editor 是一款专为《暗黑破坏神2》玩家设计的 Web 存档编辑器&…...
WarcraftHelper终极指南:轻松解决《魔兽争霸III》宽屏适配与性能优化问题
WarcraftHelper终极指南:轻松解决《魔兽争霸III》宽屏适配与性能优化问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸…...
3 鸿蒙分布式数据跨终端同步实操方案 | 鸿蒙开发筑基实战
鸿蒙分布式数据跨终端同步实操方案 | 鸿蒙开发筑基实战 作者:杨建宾(华夏之光永存) 摘要 本文讲解鸿蒙系统下跨终端数据同步的完整实操流程,从权限配置、分布式数据初始化,到数据读写、同步测试,全部使用通…...
ai辅助qt开发:让快马智能生成解决界面卡顿的多线程方案
AI辅助Qt开发:让快马智能生成解决界面卡顿的多线程方案 最近在开发一个Qt应用时遇到了一个典型问题:点击按钮执行耗时计算任务会导致界面卡死。这种场景在数据处理、文件操作等需要长时间运行的任务中很常见。通过InsCode(快马)平台的AI辅助功能&#x…...


