250的和500的偏简单,就不说了,500的想明白了很简单,代码如下:
import java.util.Arrays;
public class ColorfulRabbits {
//easy problem!
public int getMinimum(int[] replies) {
int ans=0;
Arrays.sort(replies);
int n=replies.length;
for(int i=0;i<n;){
int count=replies[i];
int j=0;
for(;j<count+1&&i+j<n;j++){
if(replies[i+j]!=count){
break;
}
}
i+=j;
ans+=count+1;
}
return ans;
}
}
950pts的题,我感觉有点考查数据结构,定义好了数据结构,想明白其实就很简单,代码如下:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Vector;
public class PalindromeGame {
public int getMaximum(String[] front, int[] back) {
HashMap<String,FrontBack> hm=new HashMap<String,FrontBack>();
int n=front.length;
for(int i=0;i<n;i++){
String f=front[i];
int b=back[i];
Node node=new Node(f,b);
StringBuffer sb=new StringBuffer(f);
FrontBack matched=hm.get(f);
if(matched==null){
matched=hm.get(sb.reverse().toString());
}
if(matched ==null){
FrontBack frontBack=new FrontBack();
frontBack.mark=f;
frontBack.isPalmeString=isPalmeString(f);
matched=frontBack;
hm.put(f, frontBack);
}
matched.add(node);
}//for
int ans=0;
Vector<Integer> vec=new Vector<Integer>();
FrontBack frontBacks[]=hm.values().toArray(new FrontBack[0]);
for(FrontBack fb:frontBacks){
Node nodes1[] = fb.queue1.toArray(new Node[0]);
Node nodes2[] = fb.queue2.toArray(new Node[0]);
Arrays.sort(nodes1);
Arrays.sort(nodes2);
if(fb.isPalmeString){
if(nodes1.length%2==0){
for(Node node:nodes1)
ans+=node.back;
}else{
for(int i=0;i<nodes1.length-1;i++){
ans+=nodes1[i].back;
}
vec.add(nodes1[nodes1.length-1].back);
}
if(nodes2.length%2==0){
for(Node node:nodes2)
ans+=node.back;
}else{
for(int i=0;i<nodes2.length-1;i++){
ans+=nodes2[i].back;
}
vec.add(nodes2[nodes2.length-1].back);
}
}else{
int min = Math.min(nodes1.length, nodes2.length);
for (int i = 0; i < min; i++) {
ans += nodes1[i].back + nodes2[i].back;
}
}
}//for
Integer[] ins=vec.toArray(new Integer[0]);
Arrays.sort(ins);
if(ins!=null&&ins.length>0){
return ans+ins[ins.length-1];
}else{
return ans;
}
}
public boolean isPalmeString(String str){
char[] chs=str.toCharArray();
int n=chs.length;
for(int i=0;i<n/2;i++){
if(chs[i]!=chs[n-1-i])
return false;
}
return true;
}
}
class FrontBack{
ArrayList<Node> queue1=new ArrayList<Node>();
ArrayList<Node> queue2=new ArrayList<Node>();
String mark=null;
boolean isPalmeString=false;
public void add(Node node){
if(mark.equals(node.front)){
queue1.add(node);
}else{
queue2.add(node);
}
}
}
class Node implements Comparable<Node>{
String front=null;
int back=-1;
public Node(String front, int back) {
super();
this.front = front;
this.back = back;
}
public int compareTo(Node node) {
if(back>node.back)
return -1;
if(back<node.back)
return 1;
return 0;
}
}
分享到:
相关推荐
topcoder的数学类算法题目。一个整数被称为k-smooth当且仅当它的最大素因子不大于k,给定N和K,计算出1 - N中有多少个整数是k-smooth。1 , 1 <= K <= 1000.
版本: 1.0.0 作者: Semen Zhydenko ... BridgeCrossingOptimized.java - SRM 146 DIV 2,1000 点问题,时间复杂度 O(n^(n^2))。 BridgeCrossingBest.java - SRM 146 DIV 2,1000 点问题,时间复杂度 O(n)。
在SRM144DIV2的250分问题中,题目要求编写一个方法,将从午夜开始的秒数转换为格式化的时分秒字符串。方法签名应为`String whatTime(int seconds)`。秒数参数的范围是0到86399秒(即0到24小时减1秒)。方法的实现...
年度赛事中,参赛者会被分为Div1和Div2两组,每个组别又分为多个房间进行SRM(Single Round Matches)。每个SRM包含三个难度不同的问题,参赛者需在规定时间内编写代码解决问题。 比赛支持的编程语言有Java、C++、...
ruoyi-vue-pro-vben 芋道管理后台,基于 vben 最新版本,最新的 vue3 vite4 ant-design-vue 4.0 typescript 语法进行重构开发,支持 springboot3 springcloud 版本
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
该项目是一个基于Java语言开发的水果管理系统设计源码,包含53个文件,其中包括30个Java源文件、13个XML配置文件、6个JAR包文件、1个Git忽略文件、1个属性文件以及1个SQL脚本文件。此系统旨在用于期末答辩展示,展示了开发者对Java编程和系统设计的深入理解。
java回顾、知识整理、拾遗、面试_java-review
mysql主从复制用struts2,spring,hibernate框架,搭建在线考试系统。网站支持(1)老师创建题库,创建题目,查看题目对题目进行增删改,发布考试(选择考试难中易比例),批改学生试卷,查看学生成绩。(.zip
一个基于Go语言实现的搜索引擎项目资源
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
基于grpc开发的跨语言的交互系统,集成BCS,Brower
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
那些年,与你同分同位次的同学都去了哪里?全国各大学在四川2020-2024年各专业最低录取分数及录取位次数据,高考志愿必备参考数据
基于go语言,使用gocv和socket实现摄像头视频传输项
apache-seatunnel-web-1.0.2
内容概要:本篇文章主要介绍了如何在VMware虚拟化平台上搭建并配置QNX Neutrino实时操作系统的步骤方法。文章首先给出了获取必要的安装文件来源,然后逐步指导用户如何完成QNX在虚拟机中的安装过程以及相关网络参数配置,包括选择适当的网络模式来实现宿主机器与QNX虚拟机之间的通信,具体为设置NAT模式或者桥接模式下的网络参数,如指定静态或动态获取IP地址的方法。 适用人群:对嵌入式开发感兴趣的技术人士,尤其是需要在Linux环境下开展工作的程序员和系统工程师。 使用场景及目标:通过详细的操作指南帮助初学者快速掌握在Windows或Linux主机上利用虚拟机搭建QNX Real-Time Operating System开发环境的基础技能,能够实现在该环境中运行简单的C/C++应用程序。 其他说明:本文不仅适用于QNX初学者作为入门引导资料,也为经验丰富的开发者提供了有关于特定环境配置的重要参考。由于涉及到的具体细节比较多,读者最好边操作边对照文章内容进行练习。同时要注意保持最新版本的虚拟化平台客户端和服务端程序以确保兼容性和稳定性。
stm32中dma结合ad的使用