一,寻找身高相近的小朋友
function compareHigh(arr,len,tall) {
let map = new Map()
for(let i = 0 ; i < len ; i++){
const frequent = Math.abs(tall - arr[i])
map.set(arr[i],frequent)
}
const list = [...map.keys()]
list.sort(function(a,b) {
if(map.get(a) == map.get(b)) {
return a-b
}
else {
return map.get(a) - map.get(b)
}
})
return list
}
console.log(compareHigh())
二,火星文计算
let str = '7#6$5#12'
let test1 = /[0-9]+\$[0-9]+/
let test2 = /[0-9]+#[0-9]+/
while (str.indexOf('$')>-1){
test('$')
}
while (str.indexOf('#')>-1){
test('#')
}
console.log(str);
function test(type){
let test = ''
if(type==='$'){
test = test1
}else if (type==='#'){
test = test2
}
str = str.replace(test,e=>{
let x= Number(e.split(type)[0])
let y= Number(e.split(type)[1])
if(type==='$'){
return 3*x+y+2
}else if(type==='#'){
return 2*x+3*y+4
}else {
return e
}
})
}
三,最长的指定瑕疵度的元音子串
let n = 1
let str = 'aabeebuu'
let yuanyin = 'aeiouAEIOU'
let len = str.length
let list = []
let yy = 0
let fy = 0
for (let i = 0; i < len; i++) {
const temp = String(str.charAt(i))
if (yuanyin.includes(temp)) {
if (fy !== 0) {
list.push(fy)
fy = 0
}
yy++
} else {
if (yy !== 0) {
list.push(yy)
yy = 0
}
fy++
}
if (i === len -1 && yy !== 0) {
list.push(yy)
}
}
if (!yuanyin.includes(str.charAt(0))) {
list.splice(0, 1)
}
let size = list.length
let indexLeft = 0
let max = 0
let count = list[0]
let xiaci = 0
if (n === 0) {
for (let i = 0; i < size; i+=2) {
max = Math.max(max, list[i])
}
} else {
for (let i = 1; i < size - 1; i+=2) {
xiaci += list[i]
console.log(xiaci,'xiaci')
count += list[i + 1]
console.log(count,'count')
if (xiaci >= n) {
if (xiaci === n) {
max = Math.max(count + n, max)
}
count -= list[indexLeft]
xiaci -= list[indexLeft + 1]
indexLeft += 2
console.log(count, 'count1')
console.log(xiaci,'xiaci1')
}
}
}
console.log(max);
四,消消乐游戏
let s = 'mMbccbc'
let len = s.length
let stack = []
let isFuhe = true
let reg = /^[A-Za-z]+$/;
for (let i = 0; i < len; i++) {
const ch = s.charAt(i)
if (!reg.test(ch)) {
isFuhe = false
break
}
if (!stack.length || stack[stack.length - 1] !== ch) {
stack.push(ch)
} else {
stack.pop()
}
}
console.log(isFuhe ? stack.length : 0)
五,判断字符串子序列
let n1 = target.length;
let n2 = source.length;
let n = 0;
let res = n2;
for (let i = n1 - 1; i >= 0; i--) {
for (let j = res - 1; j >= 0; j--) {
if (target.charAt(i) == source.charAt(j)) {
n++;
res = j;
break;
}
}
}
if (n == n1) {
console.log(res)
} else {
console.log(-1)
}
六,整数对最小和
function sum(nums1, nums2, k) {
let arr1 = nums1.sort((a, b) => a - b);
let arr2 = nums2.sort((a, b) => a - b);
let n1 = arr1.length;
let n2 = arr2.length;
let n = n1 + n2;
let res = [];
for (let i = 0; i < n1; i++) {
for (let j = 0; j < n2; j++) {
res.push(arr1[i] + arr2[j]);
}
}
res.sort((a, b) => a - b);
let sum = 0;
for (let i = 0; i < k; i++) {
sum += res[i];
}
return sum
}
console.log(sum([3, 1, 1, 4], [3, 1, 2, 3], 2))
七,按区间反转文章片段
function test(s, start, end) {
const arr = s.split(' ')
if (arr.length <= 1) {
console.log('empty',arr.length)
console.log('empty')
return 'empty'
}
const copyArr = JSON.parse(JSON.stringify(arr))
let newArr = copyArr.splice(start, end - start + 1).reverse()
arr.splice(start, end - start + 1, ...newArr)
console.log(arr.join(' '))
return arr.join(' ')
}
八,最长连续方波信号
let res = "";
let temp = "";
let b = false;
let isFomat = true;
if(s.charAt(0)=='0'){
temp ="0";
b = true;
}
for(let i=1;i<s.length;i++){
if(b){
if(s.charAt(i)==s.charAt(i-1)){
if(s.charAt(i)=='0'){
if(temp.length>=3 && isFomat){
res = temp.length>res.length ? temp : res;
}
temp = "0";
isFomat = true;
}else {
temp += s.charAt(i);
isFomat = false;
}
}else {
temp += s.charAt(i);
}
} else {
if(s.charAt(i)=='0'){
temp = "0";
b = true;
}
}
}
console.log(res);
九,数组拼接
let step = Number("3");
let m = Number("2");
let test = ["2,5,6,7,9,5,7","1,7,4,3,4"];
let lists = [];
for(let i=0; i<m; i++){
let strings = test[i].split(",").map(Number);
lists.push(strings);
}
let res = "";
let n = 0;
let count = 0;
while (count<m){
for(let i=0; i<m; i++){
let list = lists[i];
if(n>list.length){
continue;
}
let end = n + step;
if(end >= list.length){
end = list.length;
count++;
}
for(let j=n; j<end; j++){
res += list[j] + ",";
}
}
n+=step;
}
console.log(res.substring(0,res.length-1));
十,停车场车辆统计
let cars = readLine().split(",");
let count = 0;
let res = 0;
for(let i=0;i<cars.length;i++){
if(cars[i]=="1"){
count++;
}else{
if(count!=0){
res++;
count = 0;
}
continue;
}
if(count==3 || i==cars.length-1){
res++;
count = 0;
}
}
console.log(res);
十一,乱序整数序列两数之和绝对值最小
let strings = readLine().split(" ").map(i=>parseInt(i));
let n = nums.length;
let min = Number.MAX_VALUE;
let num1 = 0;
let num2 = 0;
for(let i=0;i<n-1;i++){
for(let j=i+1;j<n;j++){
let a = nums[i];
let b = nums[j];
let count = Math.abs(a+b);
min = Math.min(count, min);
if(min==count){
num1 = a;
num2 = b;
}
}
}
console.log(num1+" "+num2+" "+min);
十二,最大括号深度
input = "((([]){(()(})}))"
let stack = []
let flag = true
let max = 0
for (const x of input) {
if ((x === '(') || (x === '[') || (x === '{')) {
stack.push(x)
max = Math.max(max, stack.length)
continue
}
if ((x === ')')) {
if (stack.pop() === '(') {
continue
} else {
console.log(0);
flag = false
break
}
}
if ((x === ']')) {
if (stack.pop() === '[') {
continue
} else {
console.log(0);
flag = false
break
}
}
if ((x === '}')) {
if (stack.pop() === '{') {
continue
} else {
console.log(0);
flag = false
break
}
}
}
if (flag) {
if (stack.length === 0) {
console.log(max);
} else {
console.log(0);
}
}
十三,打印任务排序
let strings = readLine().split(",").map(i=>parseInt(i));
let len = strings.length;
let mask = [];
let list = [];
for(let i=0;i<len;i++){
let num = strings[i];
let temp = [];
temp.push(i);
temp.push(num);
mask.push(temp);
}
while (mask.length > 0){
let first = mask[0][1];
let isDayin = true;
for (let l of mask){
if(first<l[1]){
let temp = mask.shift();
mask.push(temp);
isDayin = false;
break;
}
}
if(isDayin){
let dayin = mask.shift();
list.push(dayin[0]);
}
}
let res = [];
for (let i=0;i<len;i++){
res[list[i]] = i;
}
console.log(res.join(","));
十四,单词接龙
十五,数组去重和排序
let arr = [1,3,3,3,2,4,4,4,5]
let list = []
let res = ''
const newObj = arr.reduce((obj, name) => {
if (name in obj) {
obj[name]++
} else {
obj[name] = 1
}
return obj
}, {})
for (const item in newObj) {
list.push({key: item, count: newObj[item]})
}
list.sort((a, b) => b.count - a.count).forEach(item => {
res+=item.key+','
})
console.log(res.substring(0, res.length - 1))
十六,找最小数
let s = "10200";
let m = Number("1")
let l = m + 1
let index = 0
let res = ''
while (res.length < s.length - m) {
let str = s.substring(index, l)
let min = Number.MAX_VALUE
let len = str.length
let ints = []
for (let i = 0; i < len; i++) {
let temp = str.charAt(i)
console.log(temp,'asdasd')
ints[i] = temp
if (res == '' && temp == 0) {
continue
}
min = Math.min(min, temp)
}
res += String(min)
for (let i = 0; i < len; i++) {
if (ints[i] == min) {
index += i
break
}
}
index++;
l++;
}
console.log(res,'asdasdas')
十七,按身高和体重排队
let n = Number("4");
let h = "100 100 120 130".split(" ").map(i => parseInt(i));
let w = "40 30 60 50".split(" ").map(i => parseInt(i));
let lists = []
for (let i = 0; i < n; i++) {
let stu = []
stu.push(i+1)
stu.push(h[i])
stu.push(w[i])
lists.push(stu)
}
lists.sort((a, b) => {
if (b[1] < a[1]) {
return 1
} else if (b[1] == a[1]) {
if (b[2] > a[2]) {
return -1
} else {
return 1
}
} else {
return -1
}
})
let res = ''
for (let i = 0; i < lists.length; i++) {
res += lists[i][0]
if (i !=lists.length - 1 ) {
res += ' '
}
}
console.log(res)
十八,勾股数元组
const input = 1000
let res = []
const len = Math.ceil(Math.sqrt(input))
for (let i = 0; i < len; i++) {
for (let j = i + 1; j < len; j++) {
if (isCoprime(i, j) !== 1) {
continue
}
let a = Math.pow(j, 2) - Math.pow(i, 2)
let b = 2 * i * j
let c = Math.pow(j, 2) + Math.pow(i, 2)
if (c <= input) {
if ((isCoprime(a, b) === 1) && (isCoprime(b, c) === 1) && isCoprime(a, c) === 1) {
res.push([a , b, c])
}
}
}
}
function isCoprime(x, y) {
if (y === 0) {
return x
} else {
return isCoprime(y, x % y)
}
}
console.log(res,'asdasd')
十九,乱序整数序列两数之和绝对值最小
let nums = "-1 -3 7 5 11 15".split(" ").map(i => parseInt(i));
let n = nums.length
let min = Number.MAX_VALUE
let num1 = 0
let num2 = 0
for (let i = 0; i < n; i++) {
for (let j = i + 1; j <n - 1; j++) {
let a = nums[i]
let b = nums[j]
let count = Math.abs(a + b)
min = Math.min(count, min)
if (count == min) {
num1 = a
num2 = b
}
}
}
console.log(num1 + ' ' + num2 + ' ' + min)
二十,解压报文
let s = readLine();
let res = "";
let numStr = "";
let num = [];
let zimu = [];
for(let i=0;i<s.length -1;i++){
let c = s.charAt(i);
if(!isNaN(Number(c))){
if(res.length!=0){
zimu.push(res);
res = "";
}
numStr += c;
}else if(c=='['){
num.push(Number(numStr));
numStr = "";
}else if(c==']'){
let n = num.pop();
if(res.length!=0){
zimu.push(res);
res = "";
}
let temp = zimu.pop();
let sb = "";
for(let j=0;j<n;j++){
sb+=temp;
}
if(zimu.length==0){
zimu.push(sb);
}else {
zimu.push(zimu.pop()+sb);
}
}else {
res+=c;
}
}
console.log(zimu)
二十一,数据分类
二十二,统计射击比赛成绩
let n = Number(readLine());
let s1 = readLine().split(",");
let s2 = readLine().split(",");
let map = {}
for(let i=0;i<n;i++){
let key = Number(s1[i]);
let value = Number(s2[i]);
if(map[key]){
map[key].push(value);
}else {
let list = [];
list.push(value);
map[key] = list;
}
}
var scoreLists = [];
for(var key in map){
let len = map[key].length;
if(len>=3){
let list = [];
map[key].sort();
list.push(key);
list.push(map[key][len-1] + map[key][len-2] + map[key][len-3]);
scoreLists.push(list);
}
}
scoreLists.sort((a,b)=>{
if(b[1]>a[1]){
return 1;
}
if(b[1]==a[1] && b[0]>a[0]){
return 1;
}
return -1;
});
let res = "";
let scoListsLen = scoreLists.length;
for(let i=0;i < scoListsLen - 1;i++){
res+=scoreLists[i][0]+",";
}
console.log(res+scoreLists[scoListsLen-1][0]);
二十三,服务器广播
let input = readline().split(" ").map(Number);
let n = input.length;
var list = [];
for(let i=0; i<n; i++){
if(input[i] == 1){
let temp = [];
temp.push(1);
temp.push(i+1);
list.push(temp);
}
}
for(let i=1; i<n; i++){
input = readline().split(" ").map(Number);
for(let j=0; j<n; j++){
if(input[j]==1 && j>=i){
let temp = [];
temp.push(i+1);
temp.push(j+1);
list.push(temp);
}
}
}
let res = 0;
while (list.length>0){
let temp = list[0];
list.splice(0,1);
connectNet(temp);
res++;
}
console.log(res);
function connectNet(intList){
for(let i=0; i<list.length; i++){
let temp = list[i];
let a = temp[0];
let b = temp[1];
if(intList.includes(a) || intList.includes(b)){
temp.forEach(element => {
if(!intList.includes(element)){
intList.push(element);
}
});
list.splice(i,1);
connectNet(intList);
}
}
}
二十四,查找众数及中位数
let strings = readLine().split(" ").map(i=>parseInt(i));
let len = strings.length;
if(len == 1){
console.log(strings[0]);
}else{
let ints = [];
for(let i=0;i<len;i++){
ints[i] = strings[i];
}
ints.sort((a,b)=>{
return a-b;
});
let list = [];
let max = 0;
let count = 1;
for(let i=1;i<ints.length;i++){
if(ints[i]==ints[i-1]){
count++;
}else{
if(count==max){
list.push(ints[i-1]);
}else {
max = Math.max(max,count);
if(max == count){
list = [];
list.push(ints[i-1]);
}
}
count=1;
}
if(i==ints.length-1){
if(count==max){
list.push(ints[i]);
}else {
max = Math.max(max,count);
if(max == count){
list = [];
list.push(ints[i]);
}
}
}
}
let l = list.length;
if(l%2==0){
console.log((list[l/2-1]+list[l/2])/2);
}else {
console.log(list[(l+1)/2-1]);
}
}
二十五,分糖果
var list = [];
let n = Number(readLine());
fentangguo(n,0);
list.sort((a,b)=>{
if(b>a){
return -1;
}
return 1;
});
console.log(list[0]);
function fentangguo(n,m){
if (n==1) {
list.push(m);
return 1;
}
if(n%2==0){
m++;
fentangguo(n/2,m);
}else{
m++;
fentangguo(n-1,m);
fentangguo(n+1,m);
}
return 0;
}
二十六, we are a team
let s = readLine().split(" ").map(Number);
let n = s[0];
let m = s[1];
let teams = [];
if(n<1 || n>100000 || m<1 || m>100000){
console.log("NULL");
}else {
for(let i=0;i<m;i++){
let str = readLine().split(" ").map(Number);
let a = str[0];
let b = str[1];
let c = str[2];
if(a<1 || a>n || b<1 || b>n || (c!=0 && c!=1)){
console.log("da pian zi");
}else if(c==0){
let hasTeam = false;
let teamIndex = -1;
let isCombine = false;
for(let j=0;j<teams.length;j++){
if(teams[j].includes(a)){
teams[j].push(b);
if(hasTeam){
teams[teamIndex].forEach(v=>{
if(!teams[j].includes(v)){
teams[j].push(v);
}
})
isCombine = true;
break;
}
teamIndex = j;
hasTeam = true;
continue;
}
if(teams[j].includes(b)){
teams[j].push(a);
if(hasTeam){
teams[teamIndex].forEach(v=>{
if(!teams[j].includes(v)){
teams[j].push(v);
}
})
isCombine = true;
break;
}
teamIndex = j;
hasTeam = true;
}
}
if(isCombine){
teams.splice(teamIndex,1);
}
if(!hasTeam){
let team = [];
team.push(a);
team.push(b);
teams.push(team);
}
}else {
let isATeam = false;
for(let j=0;j<teams.length;j++){
if(teams[j].includes(a) && teams[j].includes(b)){
isATeam = true;
}
}
console.log(isATeam ? "we are a team" : "we are not a team");
}
}
}
二十七,非严格递增连续数字序列长度
function noStrictDigit(str) {
let dp = new Array(str.length).fill(1);
let arr = str.split('').map(n => parseInt(n));
for (let i = 0; i <arr.length; i++) {
if (isNaN(arr[i])) {
continue;
} else {
if (arr[i] === arr[i-1] || arr[i] === (arr[i-1] + 1) ) {
dp[i] = dp[i-1] + 1;
}
}
}
console.log(dp.sort()[dp.length - 1]);
}
noStrictDigit('abc2234019A334bc');
二十八,最长的连续子序列
function longList(arr,target) {
if (target == 0) return -1;
let result = 0, left = 0, right = 0, sum = 0;
while(left < arr.length && right < arr.length) {
if (sum >= target) {
result = (sum == target) ? Math.max(result, right - left) : result;
sum = sum - arr[left];
left++
} else {
sum += arr[right];
right++
}
}
result = (target == sum || target == sum - arr[left++])
? Math.max(result, right - left) : result;
return result;
}
二十九,【华为OD机试真题 JS】寻找相同子串
let t = readLine();
let p = readLine();
if(t.length>1000000){
console.log("No");
}
if(p.length>t.length && p.length>10000){
console.log("No");
}
console.log(t.indexOf(p) == -1? "No" : t.indexOf(p)+1);
三十,检查是否存在满足条件的数字组合
let n = Number(readLine());
let ints = readLine().split(" ").map(i=>parseInt(i));
let list = [];
for(let i=0;i<n;i++){
for(let j=0;j<n;j++){
if(i==j){
continue;
}
for(let k=0;k<n;k++){
if(i==k || j==k){
continue;
}
if(ints[i] == ints[j] + 2*ints[k] ){
let res = ints[i]+" "+ints[j]+" "+ints[k];
list.push(res);
}
}
}
}
if(list.length==0){
console.log(0);
}else {
list.forEach(v=>{
console.log(v);
})
}
三十一,字符串筛选排序
三十二,仿LISP字符串运算
let s = readLine().split(" ");
let fuhao = [];
let num = [];
let isE = false;
for(let i=0;i<s.length;i++){
if(s[i].includes("a")){
fuhao.push("+");
}else if(s[i].includes("b")){
fuhao.push("-");
}else if(s[i].includes("m")){
fuhao.push("*");
}else if(s[i].includes("v")){
fuhao.push("/");
}else if(s[i].includes(")")){
let temp = "";
for(let j=0;j<s[i].length;j++){
if(s[i].charAt(j)==')'){
if(temp.length!=0){
num.push(Number(temp));
temp = "";
}
let b = num.pop();
let a = num.pop();
let f = fuhao.pop();
if(f=="/" && b==0){
isE = true;
break;
}else {
num.push(jisuan(a,b,f));
}
}else {
temp += s[i].charAt(j);
}
}
}else {
num.push(Number(s[i]));
}
if(isE){break;}
}
if(isE){
console.log("error");
}else {
console.log(num.pop());
}
function jisuan( a, b, f){
switch (f){
case "+":
return a+b;
case "-":
return a-b;
case "*":
return a*b;
case "/":
return Math.floor(a/b);
}
return 0;
}
5键键盘的输出
let s = "1 1 5 1 5 2 4 4".split(" ");
let temp = "";
let screen = "";
let select = "";
for(let i=0; i<s.length; i++){
switch (s[i]){
case "1":
if(select!=""){
screen = "a";
select = "";
}else {
screen+="a";
}
break;
case "2":
if(select!=""){
temp = select;
}
break;
case "3":
if(select!=""){
temp = select;
screen = "";
select = "";
}
break;
case "4":
if(select!=""){
screen = temp;
select = "";
}else {
screen+=temp;
}
break;
case "5":
if(screen!=""){
select = screen;
}
break;
}
}
console.log(screen.length);
猴子爬山
let n = Number(readLine());
console.log(pashan(n));
function pashan( n){
if(n==1){
return 1;
}
if(n==2){
return 1;
}
if(n==3){
return 2;
}
return pashan(n-1) + pashan(n-3);
}
计算疫情扩散时间
let strs = readLine().split(",").map(Number);
var N = Math.sqrt(strs.length);
let n = 0;
let list = [];
var ints = [];
for(let i=0;i<N;i++){
ints[i] = [];
for(let j=0;j<N;j++){
let x = strs[n++];
ints[i][j] = x;
if(x==0){
let temp = [];
temp[0] = i;
temp[1] = j;
list.push(temp);
}
}
}
if(list.length==0 || list.length==strs.length){
console.log(-1);
}else {
let res = 0;
let sickList = [];
while (list.length!=0){
res++;
for(let i=0; i<sickList.length; i++){
let temp = sickList[i];
ints[temp[0]][temp[1]] = 1;
}
sickList = [];
for(let i=0; i<list.length; i++){
let temp = list[i];
if(chuanran(temp[0],temp[1])){
sickList.push(temp);
}
}
list = list.filter(e=>!sickList.includes(e));
}
console.log(res);
}
function chuanran( x, y){
if(x>0 && ints[x-1][y] == 1){
return true;
}
if(x<N-1 && ints[x+1][y] == 1){
return true;
}
if(y>0 && ints[x][y-1] == 1){
return true;
}
if(y<N-1 && ints[x][y+1] == 1){
return true;
}
return false;
}
计算GPU算力
function gpuPower(n,len,arr) {
let more = 0 , time = 0
for(let i of arr) {
if(i+more>n) {
more = i + more - n
}else if(i+more <=n) {
more = 0
}
time+=1
}
while(more>0) {
more -= n
time += 1
}
return time
}
console.log(gpuPower(3,5,[1,2,3,4,5]))
console.log(gpuPower(4,5,[5,4,1,1,1]))
字符串变换最小字符串
let s = "bcdefa";
let len = s.length;
let listBySort = [];
let chars = [];
for(let i=0; i<len; i++){
listBySort.push(s.charAt(i));
chars[i] = s.charAt(i);
}
listBySort.sort();
let change = ' ';
let minIndex = 0;
let changeIndex = 0;
for(let i=0; i<len; i++){
if(listBySort[i]<s.charAt(i)){
change = listBySort[i];
changeIndex = i;
break;
}
}
if(change != ' '){
for(let i=len-1; i>=0; i--){
if(s.charAt(i) == change){
minIndex = i;
break;
}
}
chars[minIndex] = chars[changeIndex];
chars[changeIndex] = change;
}
let res = "";
for(let i=0; i<chars.length; i++){
res+=chars[i];
}
console.log(res);
篮球比赛
let people = readLine().split(" ").map(i=>parseInt(i));
let count = 0;
for(let i=0;i<10;i++){
count+=people[i];
}
let n ;
let min = Number.MAX_VALUE;
for(let i=0;i<6;i++){
for(let j=i+1;j<7;j++){
for(let k=j+1;k<8;k++){
for(let l=k+1;l<9;l++){
for(let m=l+1;m<10;m++){
n = people[i] + people[j] + people[k] + people[l] + people[m];
min = Math.min(min, Math.abs(count-2*n));
}
}
}
}
}
console.log(min);
连续字母长度
let s = readLine();
let n = Number(readLine());
let map = {};
let count = 1;
for(let i=0;i<s.length-1;i++){
if(s.charAt(i)==s.charAt(i+1)){
count++;
} else {
if(map[s.charAt(i)]){
count = Math.max(count,map[s.charAt(i)]);
}
map[s.charAt(i)] = count;
count = 1;
}
if(i==s.length-2){
let key = count==1 ? s.charAt(i+1) : s.charAt(i);
map[key] = count;
}
}
let list = [];
for (let c in map
) {
list.push(map[c]);
}
list.sort((a,b)=>{
if (b>a){
return 1;
}
return -1;
});
if(list.length>=n){
console.log(list[n-1]);
}else {
console.log(-1);
}
素数之积
let n = Number(readLine());
let list = [];
let m = 0;
while (m!=n){
n = m!=0? m: n;
for(let i=2;i<Math.sqrt(n)+1;i++){
if(n%i==0){
m = n/i;
list.push(i);
break;
}
}
}
list.push(m);
if(list.length==2){
console.log(list[0]+" "+list[1]);
}else {
console.log("-1 -1");
}
判断一组不等式是否满足约束并输出最大差
let strings = readLine().split(";");
let length = strings.length;
let bianliang = strings[length-3].split(",").map(i=>Number(i));
let mubiao = strings[length-2].split(",").map(i=>Number(i));
let ys = strings[length-1].split(",");
let m = ys.length;
let n = bianliang.length;
let doubles = [];
for(let i=0;i<m;i++){
let xs = strings[i].split(",");
doubles[i] = new Array;
for(let j=0;j<n;j++){
doubles[i][j] = Number(xs[j]);
}
}
let isYueshu = true;
let max = 0;
for (let i=0;i<m;i++){
let d=0;
let b = true;
for(let j=0;j<n;j++){
d+=doubles[i][j]*bianliang[j];
}
max = Math.max(max,d-mubiao[i]);
if(ys[i] == ">"){
b = d>mubiao[i];
}else if(ys[i] == ">="){
b = d>=mubiao[i];
}else if(ys[i] == "<"){
b = d<mubiao[i];
}else if(ys[i] == "<="){
b = d<=mubiao[i];
}else if(ys[i] == "="){
b = d==mubiao[i];
}
if(!b){
isYueshu = false;
}
}
console.log(isYueshu+" "+ parseInt(max));
输出字符串中包含所有整数的最小和
let s = readLine();
let len = s.length;
let list = [];
let temp = "";
let isFuhao = false;
let isDigit = /[0-9]/;
for(let i=0;i<len;i++){
let c = s.charAt(i);
if(isDigit.test(c)){
if(isFuhao){
temp += c;
}else {
list.push(Number(c));
}
}else if(c=='-'){
if(temp!="" && temp!="-"){
list.push(Number(temp));
}
isFuhao = true;
temp = "-";
}else {
if(temp!="" && temp!="-"){
list.push(Number(temp));
}
temp = "";
isFuhao = false;
}
}
let res = 0;
for (let i of list) {
res+=i;
}
console.log(res);
组成最大数
let arr = [10,2]
var largestNumber = function (nums) {
nums.sort((a, b) => {
a = a.toString();
b = b.toString();
if (a + b > b + a) {
return -1
} else {
return 1
}
});
if (nums[0] == 0) return '0'
return nums.join('')
};
console.log(largestNumber(arr))
找朋友
let n = Number(readLine());
let ints = readLine().split(" ").map(i=>parseInt(i));
let list = [];
for(let i=0;i<n-1;i++){
for(let j=i+1;j<n;j++){
if(ints[j]>ints[i]){
list.push(j);
break;
}
if(j==n-1){
list.push(0);
}
}
}
list.push(0);
console.log(list.join(" "));
字符串统计重排
let s = "abababb";
let map = new Map();
for(let i=0; i<s.length; i++){
if(!map.has(s.charAt(i))){
map.set(s.charAt(i), 1)
}else{
map.set(s.charAt(i), map.get(s.charAt(i))+1);
}
}
let entryList = Array.from(map);
let upReg = new RegExp("^[A-Z]{1}$");
let lowReg = new RegExp("^[a-z]{1}$");
entryList.sort((a,b)=>{
if (b[1]>a[1]) {
return 1;
}
if(b[1]<a[1]){
return -1;
}
if(lowReg.test((b[0])) && upReg.test(a[0])){
return 1;
}
if(lowReg.test((a[0])) && upReg.test((b[0]))){
return -1;
}
if(b[0] < a[0] ){
return 1;
}
return -1;
});
let res = "";
for(let i=0; i<entryList.length; i++){
res += entryList[i][0] + ":";
res += entryList[i][1] + ";";
}
console.log(res);
德州扑克
let numList = [];
let map = new Map();
let color = Array(4).fill(0);
for(let i=0; i<5; i++){
let input = readLine().split(" ");
let num;
switch (input[0]){
case "A":
num = 1;
break;
case "J":
num = 11;
break;
case "Q":
num = 12;
break;
case "K":
num = 13;
break;
default:
num = Number(input[0]);
}
if(map.has(num)){
map.set( num, map.get(num)+1);
}else{
map.set( num, 1);
}
numList.push(num);
let hs = input[1];
if(hs == "H"){
color[0]++;
}else if(hs == "S"){
color[1]++;
}else if(hs == "C"){
color[2]++;
}else {
color[3]++;
}
}
let isTongHua = false;
if(color[1]==5 || color[1]==5 || color[2]==5 || color[3]==5){
isTongHua = true;
}
let res = 7;
if(map.size == 5){
numList.sort((a,b)=>{return a-b});
let isShunZi = isShunzi(numList);
if(isShunZi){
res = isTongHua ? 1 : 5;
}else {
res = isTongHua ? 4 : 7;
}
}else {
map.forEach((v, k)=>{
if(v == 4){
return res = 2;
}else if(v == 3){
return res = map.size == 2 ? 3 : 6;
}
})
}
console.log(res);
function isShunzi( list){
let b = true;
let index = 1;
let isA = false;
if(list[0]==1 && list[1]!=2){
index = 2;
isA = true;
}
for(let i=index; i<5; i++){
if(list[i] != list[i-1]+1){
b = false;
break;
}
if(i==4 && isA && list[4]!=13){
b = false;
}
}
return b;
}
靠谱的车
let n = Number(readLine());
let ans = n;
let temp = 0;
let k=0;
let j=1;
while(n > 0){
if(n%10 > 4){
temp += (n%10-1)*k+j;
}else{
temp += (n%10)*k;
}
k = k*9+j;
j*=10;
n = Math.floor(n/10);
}
console.log(ans-temp);
VLAN资源池
let strs = readLine().split(",");
let n = Number(readLine());
let len = strs.length;
let list = [];
for(let i=0; i<len; i++){
let temp = strs[i].split("-");
if(temp.length==1 ){
if(Number(strs[i]) != n){
list.push(strs[i]);
}
}else {
let min = Number(temp[0]);
let max = Number(temp[1]);
if(min>n || max<n){
list.push(strs[i]);
}else if(min==n){
list.push((min+1) + "-" + max);
}else if(max==n){
list.push(min + "-" + (max-1));
}else {
if(min != n-1){
list.push(min + "-" + (n-1));
}else {
list.push(temp[0]);
}
if(n+1 != max){
list.push((n+1) + "-" +max);
}else {
list.push(temp[1]);
}
}
}
}
list.sort((a,b)=>{
let tempA = a.split("-");
let tempB = b.split("-");
if(Number(tempA[0]) < Number(tempB[0])){
return -1;
}
return 1;
});
let res = "";
for(let i=0; i<list.length; i++){
res += list[i];
if(i!=list.length-1){
res += ",";
}
}
console.log(res);
找终点
let nums = readLine().split(" ").map(i=>parseInt(i));
let ints = [];
let len = nums.length;
for(let i=0;i<len;i++){
ints[i] = nums[i];
}
let step = 0;
let count = 0;
let x = Number.MAX_VALUE;
for(let i=0;i<len/2-1;i++){
step = i;
count = 1;
while (step < len-1) {
step += ints[step];
count++;
}
if(step == len-1){
x = Math.min(x,count);
}
}
if(x==Number.MAX_VALUE){
console.log("-1");
}else {
console.log(x);
}
拼接URL
let s = readLine().split(",");
let res = "";
for(let i=0;i<s.length;i++){
if(s[i]!="" && s[i]!="/"){
res+="/"+s[i].replace("/","");
}
}
console.log(res=="" ? "/" : res);
矩阵最大值
let n = Number(readLine());
let res = 0;
for(let i=0;i<n;i++){
let s = readLine().replaceAll(",","");
let max = 0;
for(let j=0;j<n;j++){
let newS = s.substring(j) + s.substring(0,j);
max = Math.max(max,parseInt(newS,2));
}
res+=max;
}
console.log(res);
最小传输时延
let input1 = readLine().split(" ").map(Number);
let N = input1[0];
let M = input1[1];
var res = [];
var list = [];
for(let i=0;i<M;i++){
let ints = readLine().split(" ").map(Number);
if((ints[0]<1 || ints[0]>N) ||
(ints[1]<1 || ints[1]>N)){
break;
}
list.push(ints);
}
let input2 = readLine().split(" ").map(Number);
let start = input2[0];
let end = input2[1];
qiushiyan(start, end, 0);
if(res.length == 0){
console.log(-1);
}else {
console.log(Math.min(...res));
}
function qiushiyan( start, end, count){
for(let i=0;i<list.length;i++){
let temp = list[i];
if(temp[0]==start){
if(temp[1]==end){
res.push(count + temp[2]);
continue;
}
qiushiyan(temp[1], end, count + temp[2]);
}
}
}
矩形相交的面积
let a = readLine().split(" ").map(Number);
let b = readLine().split(" ").map(Number);
let c = readLine().split(" ").map(Number);
let top = Math.min(a[1],Math.min(b[1],c[1]));
let left = Math.max(a[0],Math.max(b[0],c[0]));
let down = Math.max(a[1]-a[3],Math.max(b[1]-b[3],c[1]-c[3]));
let right = Math.min(a[0]+a[2],Math.min(b[0]+b[2],c[0]+c[2]));
if(top>down && right>left){
console.log((top-down)*(right-left));
}else {
console.log(0);
}
流水线
let input = readLine().split(" ").map(i=>parseInt(i));
let ints = readLine().split(" ").map(i=>parseInt(i));
let m = input[0];
let n = input[1];
ints.sort((a,b)=>{return a-b});
let res = 0;
let count = Array(m).fill(0);
let index = 0;
for(let i=0;i<n;i++){
res = Math.min(...count);
for(let j=0;j<m;j++){
if(res == count[j]){
index = j;
break;
}
}
count[index]+=ints[i];
}
console.log(Math.max(...count));
快递运输
let nums = "5,10,2,11".split(",").map(Number);
let n = Number("20");
let len = nums.length;
nums.sort((a,b)=>{if(b>a) return -1});
let res = 0;
let num = 0;
for(let i=0; i<len; i++){
res += nums[i];
if(res>n){
break;
}
num++;
}
console.log(num);
目录删除
let n = Number(readLine());
let list = [];
var res = "";
var afterDelete = [];
for(let i=0;i<n;i++){
let ints = readLine().split(" ").map(i=>parseInt(i));
if(afterDelete.indexOf(ints[0])==-1){
afterDelete.push(ints[0]);
}
if(afterDelete.indexOf(ints[1])==-1){
afterDelete.push(ints[1]);
}
list.push(ints);
}
let id = Number(readLine());
let index = afterDelete.indexOf(id);
afterDelete.splice(index,1);
deleteMenu(list,id);
afterDelete.sort();
for(let i=0;i<afterDelete.length;i++){
if(afterDelete[i]==0){
continue;
}
res+=afterDelete[i];
if(i!=afterDelete.length-1){
res+=" ";
}
}
console.log(res);
function deleteMenu( list, n){
for(let i=0;i<list.length;i++){
if(list[i][1] == n){
let index = afterDelete.indexOf(list[i][0]);
afterDelete.splice(index,1);
delete(list,list[i][0]);
}
}
}
输入法联想
let strings = "The furthest distance in the world, Is not between life and death, But when I stand in front of you, Yet you don't know that I love you."
.replace("'"," ")
.replace(",","")
.replace(".","")
.replace("?","")
.replace("!","")
.split(" ");
strings.sort();
let key = "f";
let keyLen = key.length;
let strLen = strings.length;
let res = "";
for(let i=0; i<strLen; i++){
let s = strings[i];
if(s.length >= keyLen && s.substring(0,keyLen) == key){
if(res.length != 0){
res += " ";
}
res += s;
}
}
if(res.length == 0){
res = key;
}
console.log(res);
区间交集
let list = [];
let test = ["0 3","1 3","3 5","3 6"];
for(let i=0;i<test.length;i++){
let x = test[i].split(" ");
let node = new qujian(x[0], x[1]);
list.push(node);
}
let list1 = [];
collection(list);
for(let i=0;i<list.length-1;i++){
for(let j=i+1;j<list.length;j++){
let a = list[i];
let b = list[j];
if(b.left <= a.right){
let l = Math.max(a.left, b.left);
let r = Math.min(a.right, b.right);
let node = new qujian(l, r);
list1.push(node);
}
}
}
if(list1.length==0){
console.log("None");
return;
}
collection(list1);
let l = list1[0].left;
let r = list1[0].right;
for(let i=1; i<list1.length; i++){
let node = list1[i];
if(node.left > r){
console.log(l+" "+r);
l = node.left;
r = node.right;
}else {
l = Math.min(node.left, l);
r = Math.max(node.right, r);
}
}
console.log(l+" "+r);
function qujian(l, r){
this.left = l;
this.right = r;
}
function collection( list){
list.sort((a,b) => {
if(a.left==b.left){
return a.right-b.right;
}
return a.left-b.left;
});
}
玩牌高手
let ints = readLine().split(",").map(i=>parseInt(i));
let len = ints.length;
let list = [];
if(ints[0]<=0){
list.push(0);
}else {
list.push(ints[0]);
}
for(let i=1;i<len;i++){
let count = list[i-1]+ints[i];
if(i<3){
list.push(count>0 ? count : 0);
}else {
list.push(count>list[i-3] ? count : list[i-3]);
}
}
console.log(list[len-1]);
日志排序
var linNum = Number(readLine());
var lists = [];
for(let i=0;i<linNum;i++){
var list = [];
var strings = readLine().replace(".",":").split(":");
for(let j=0;j<strings.length;j++){
list.push(strings[j]);
}
lists.push(list);
}
lists.sort((a,b)=>{
if(Number(b[0])>Number(a[0])){
return -1;
}
if(Number(b[0])<Number(a[0])){
return 1;
}
if(Number(b[1])>Number(a[1])){
return -1;
}
if(Number(b[1])<Number(a[1])){
return 1;
}
if(Number(b[2])>Number(a[2])){
return -1;
}
if(Number(b[2])<Number(a[2])){
return 1;
}
if(Number(b[3])>Number(a[3])){
return -1;
}
if(Number(b[3])<Number(a[3])){
return 1;
}
return 1;
});
for(let i=0;i<linNum;i++){
console.log(lists[i][0]+":"+
lists[i][1]+":"+
lists[i][2]+"."+
lists[i][3]);
}
找到它
let input = readLine().split(" ").map(Number);
var n = input[0];
var m = input[1];
var str = readLine();
var len = str.length;
let chars = [];
for(let i=0;i<n;i++){
let input2 = readLine();
chars[i] = [];
for(let j=0;j<m;j++){
chars[i][j] = input2.charAt(j);
}
}
let res = "NO";
let start = str.charAt(0);
for(let i=0; i<n; i++){
for(let j=0; j<m; j++){
if(start == chars[i][j] && findNext(i, j,0, chars)==1){
res = (i+1)+" "+(j+1);
break;
}
}
}
console.log(res);
function findNext( x, y, index, chars){
if(index == len-1){
return 1;
}
index++;
let temp = str.charAt(index);
if(x>0 && chars[x-1][y] == temp){
chars[x-1][y] = 0;
if(findNext(x-1, y, index, chars) == 1){
return 1;
}else {
chars[x-1][y] = temp;
}
}
if(x<n-1 && chars[x+1][y] == temp){
chars[x+1][y] = 0;
if(findNext(x+1, y, index, chars) == 1){
return 1;
}else {
chars[x+1][y] = temp;
}
}
if(y>0 && chars[x][y-1] == temp){
chars[x][y-1] = 0;
if(findNext(x,y-1, index, chars) == 1){
return 1;
}else {
chars[x][y-1] = temp;
}
}
if(y<m-1 && chars[x][y+1] == temp){
chars[x][y+1] = 0;
if(findNext(x,y+1, index, chars) == 1){
return 1;
}else {
chars[x][y+1] = temp;
}
}
return 0;
}
最小数字
let nums = readLine().split(",").map(i=>parseInt(i));
let slen = nums.length;
let res = "";
var min = Number.MAX_VALUE;
if(slen==1){
res = nums[0];
}else {
let numList = [];
for(let i=0;i<slen;i++){
numList.push(nums[i]);
}
numList.sort((a,b)=>{return a-b});
let numsLen;
if(slen==2){
numsLen = 2;
}else {
numsLen = 3;
}
let ints = [];
for(let i=0; i<numsLen; i++){
ints[i] = numList[i];
}
fullArr(ints, 0, numsLen);
res = min;
}
console.log(res);
function fullArr( ints, cursor, end){
if(cursor == end){
let s="";
for(let i of ints){
s+=i;
}
min = Math.min( min, Number(s));
}else {
for(let i=cursor; i<end; i++){
swap(ints, cursor, i);
fullArr(ints, cursor+1, end);
swap(ints, cursor, i);
}
}
}
function swap( ints, a, b){
let temp = ints[a];
ints[a] = ints[b];
ints[b] = temp;
}
解密犯罪时间
let s = readLine();
let errorTime = Number(s.substring(0,2)+s.substring(3));
let num = [];
num[0] = s.charAt(0);
num[1] = s.charAt(1);
num[2] = s.charAt(3);
num[3] = s.charAt(4);
let time;
let min = Number.MAX_VALUE;
let minThan = Number.MAX_VALUE;
for(let i=0;i<4;i++){
if(Number(num[i])>2){
continue;
}
for(let j=0;j<4;j++){
if(Number(num[i])==2 && Number(num[j])>3){
continue;
}
for(let k=0;k<4;k++){
if(Number(num[k])>6){
continue;
}
for(let l=0;l<4;l++){
time = Number(num[i]+num[j]+num[k]+num[l]);
if(time<errorTime){
min = Math.min(min,time);
}else if(time>errorTime){
minThan = Math.min(minThan,time);
}
}
}
}
}
let res = "";
if(minThan == Number.MAX_VALUE){
res = String(min);
}else {
res = String(minThan);
}
console.log(res.substring(0,2)+":"+res.substring(2));
第K个排列
let n = Number(readLine());
let k = Number(readLine());
var list = [];
let ints = [];
for(let i=0;i<n;i++){
ints[i] = i+1;
}
fullArray(ints,0,n-1);
list.sort((a,b)=>{
return b>a ? -1: 1;
});
console.log(list[k-1]);
function swap( arr, a, b){
let temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
function fullArray(array, cursor, end) {
if (cursor == end) {
let s = "";
for (let a of array) {
s+=a;
}
list.push(Number(s));
} else {
for (let i = cursor; i <= end; i++) {
swap(array, cursor, i);
fullArray(array, cursor + 1, end);
swap(array, cursor, i);
}
}
}
最大N个数与最小N个数的和
let m = Number(readLine());
let nums = readLine().split(" ").map(i=>parseInt(i));
let n = Number(readLine());
let treeSet = [];
for(let i=0;i<m;i++){
if(treeSet.includes(nums[i])){
continue;
}
treeSet.push(nums[i]);
}
treeSet.sort((a,b)=>{return a-b});
let count = 0;
if(treeSet.length<n*2){
count = -1;
}else {
for(let i=0;i<n;i++){
count += treeSet.shift() + treeSet.pop();
}
}
console.log(count);
喊7的次数重排
let s = sc.radLine().split(" ").map(i=>parseInt(i));;
let len = s.length;
let ints = new Array(len).fill(0);
let num = 0;
for(let i=0;i<len;i++){
num += s[i];
}
let step = 7;
while (num>0){
if(step%7==0 || String(step).indexOf("7")!=-1){
ints[(step-1)%len]++;
num--;
}
step++;
}
let res = "";
for(let i=0;i<len;i++){
res+=String(ints[i]);
if(i == len-1){
break;
}
res+=" ";
}
console.log(res);
数据二叉树
let ints = readLine().split(" ").map(Number);
let len = ints.length;
let idx = -1;
for (let i = 0; i < len; i++) {
if (ints[i] == -1) {
continue;
}
if ( (i+1)*2+1 > ints.length ||
(ints[(i+1)*2-1] == -1 && ints[(i+1)*2] == -1)) {
if (idx == -1 || ints[idx] > ints[i]) {
idx = i;
}
}
}
let stack = [];
stack.push(idx);
while (idx>0) {
if ((idx+1)%2 == 0) {
idx = (idx+1)/2 - 1;
stack.push(idx);
} else {
idx = idx/2 - 1;
stack.push(idx);
}
}
let ret = "";
while (stack.length!=0) {
ret += " " + ints[stack.pop()];
}
console.log(ret.substring(1));
最大矩阵和
let n = Number(readLine());
let m = Number(readLine());
let ints = [];
for(let i=0;i<n;i++){
let input = test[i].split(",").map(i=>parseInt(i));
let hang = [];
for(let j=0;j<m;j++){
hang[j] = input[j];
}
ints[i] = hang;
}
let max = 0;
for(let start_row = 0;start_row<n;start_row++){
for(let start_col = 0;start_col<m;start_col++){
for(let end_row = start_row;end_row<n;end_row++){
let jisuan = 0;
for(let end_col = start_col;end_col<m;end_col++){
let rowindex = end_row;
while (rowindex>=start_row){
jisuan+=ints[rowindex][end_col];
rowindex--;
}
max = Math.max(max,jisuan);
}
}
}
}
console.log(max);
磁盘容量排序
let n = Number(readLine());
let num = [];
let map = [];
for (let i = 0; i < n; i++) {
let sum = 0;
let index = -1;
let str = readLine();
map[i + 1] = str;
for (let j = 0; j < str.length; j++) {
if (str.charAt(j) == 'M') {
sum += Number(str.substring(index + 1, j));
index = j;
} else if (str.charAt(j) == 'G') {
sum += Number(str.substring(index + 1, j)) * 1024;
index = j;
} else if (str.charAt(j) == 'T') {
sum += Number(str.substring(index + 1, j)) * 1024 * 1024;
index = j;
}
}
num[i] = [];
num[i][0] = i + 1;
num[i][1] = sum;
}
num.sort((a,b)=>{
return a[1]-b[1];
});
for (let i = 0; i < n; i++) {
console.log(map[num[i][0]]);
一种字符串压缩表示的解压
let str = readLine();
let res = "";
let num = -1;
let len = str.length;
let numReg = new RegExp("^[0-9]{1}$");
let caseReg = new RegExp("^[a-z]{1}$");
for(let i=0; i<len; i++){
let c = str[i];
if(numReg.test(c)){
let numTemp = Number(c);
if(i == len-1){
res = "!error";
break;
}else if(num == -1){
if(numTemp==0 || (numTemp<3 && numTemp>0 && caseReg.test(str[i+1]))){
res = "!error";
break;
}else{
num = Number(c);
}
}else{
num = Number(String(num) + c);
}
}else if(caseReg.test(c)){
if(num>=3){
if(i!=len-1 && c==str[i+1]){
res = "!error";
break;
}
for(let j=0; j<num; j++){
res+=c;
}
num = -1;
}else {
if(i<len-2 && c==str[i+1] && c==str[i+2]){
res = "!error";
break;
}
res += c;
}
}else {
res = "!error";
break;
}
}
console.log(res);
最大足迹
let s = "ferg(3,10)a13fdsf3(3,4)f2r3rfasf(5,10)";
let r = 0;
let l = 0;
let list = [];
let lists = [];
for(let i=0; i<s.length; i++){
if(s.charAt(i)=='('){
l = i+1;
}else if(s.charAt(i)==')'){
r = i;
}
if(r!=0){
let ss = s.substring(l, r).split(",");
let j = Number(ss[0]);
let w = Number(ss[1]);
if(j>0 && j<1000 && w>0 && w<1000 && ss[0].charAt(0)!='0' && ss[1].charAt(0)!='0'){
list.push(j);
list.push(w);
lists.push(list);
list = [];
}
l = r =0;
}
}
if(lists.length == 0){
console.log("(0,0)");
}else {
lists.sort((a,b)=>{
let ax = a[0]*a[0]+a[1]*a[1];
let bx = b[0]*b[0]+b[1]*b[1];
if(bx>=ax){
return 1;
}
return -1;
});
console.log("("+lists[0][0]+","+lists[0][1]+")");
}
计算面积
let n = Number(readLine());
let e = Number(readLine());
let list = [];
for(let i=0; i<n; i++){
let ints = [];
ints[0] = Number(readLine());
ints[1] = Number(readLine());
list.push(ints);
}
let res = 0;
let high = 0;
for(let i=1; i<list.length; i++){
high += list[i-1][1];
res += Math.abs((list[i][0]-list[i-1][0])*high);
}
res += Math.abs((e - list[n-1][0])*(high + list[n-1][1]));
console.log(res);
最长广播响应
let input = readLine().split(" ").map(Number);
let m = input[0];
let n = input[1];
let list = [];
for(let i=1; i<=m; i++){
list.push(i);
}
var linkList = [];
for(let i=0; i<n; i++){
let ints = readLine().split(" ").map(Number);
linkList.push(ints);
}
let start = Number(readLine());
list.splice(start-1, 1);
let max = 0;
for(let i=0; i<m-1; i++){
var min = Number.MAX_VALUE;
time(start, list[i], 0);
max = Math.max(0, min);
}
console.log(max*2);
function time( start, end, count){
for(let i=0; i<n; i++){
let u = linkList[i][0];
let v = linkList[i][1];
if(u == start){
if(v == end){
min = Math.min(min, count+1);
if(count==0){
break;
}
}else {
time(v, end, count+1);
}
}
}
}
求最多可以派出多少支团队
let n = Number(readLine());
let list = readLine().split(" ").map(Number);
let m = Number(readLine());
list.sort();
let count = 0;
let index;
for(index = n-1; index>=0; index--){
if(list[index] >= m){
count++;
}else {
break;
}
}
for(let i=0, j=index; i<j; ){
if(list[i]+list[j] >= m){
count++;
i++;
j--;
}else {
i++;
}
}
console.log(count);
数字反转打印
let n = Number(readLine());
let lists = [];
for(let i=1;i<=n;i++){
let list = [];
let fn = firstNum(i);
lists.forEach(x=>{
x.unshift(" ");
});
for(let j=0;j<i;j++){
let temp = fn++ + "***";
list.push(temp.substring(0,4));
if(j!=i-1){
list.push(" ");
}
}
if(i%2==0){
list.reverse();
}
lists.push(list);
}
lists.forEach(x=>{
let res = "";
for(let i=0;i<x.length;i++){
res+=x[i];
}
console.log(res);
});
function firstNum(n){
if(n == 1){
return 1;
}
return firstNum(n-1) + n - 1;
}
火锅
let n = Number(readLine());
let m = Number(readLine());
let footList = [];
for(let i=0;i<n;i++){
let nums = readLine().split(" ").map(i=>parseInt(i));
footList.push(nums[0]+nums[1]);
}
let list = [];
footList.forEach(v=>{
if(!list.includes(v)){
list.push(v);
}
})
list.sort();
let count = 0;
let len = list.length;
let time = 0;
for(let i=0;i<len;i++){
if(time <= list[i]){
count++;
time = list[i]+m;
}
}
console.log(count);
敏感字段加密
let n = Number(readLine());
let s = readLine();
let len = s.length;
let list = [];
let temp = "";
let yh = false;
for(let i=0; i<len; i++){
if(s.charAt(i)!='_'){
if(s.charAt(i)=='\"'){
yh = !yh;
}
temp += s.charAt(i);
if(i==len-1){
list.push(temp);
}
}else {
if(temp==""){
continue;
}
if(yh){
temp+=s.charAt(i);
}else {
list.push(temp);
temp = "";
}
}
}
let count = list.length;
if(n>=count){
console.log("ERROR");
}else {
let res = "";
for(let i=0; i<count; i++){
if(i==n){
res+="******";
}else {
res += list[i];
}
if(i != list.length-1){
res += "_";
}
}
console.log(res);
}
九宫格按键输入
let s = readLine();
var temp = "";
var sb = "";
var count = 0;
var strings = [" ",",.","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"];
let isEn = false;
let len = s.length;
for(let i=0;i<len;i++){
let c = s.charAt(i);
if(c == "#"){
isEn = !isEn;
if (temp!=""){
uotput(temp);
count = 0;
temp = "";
}
continue;
}
if(isEn){
if(temp == ""){
if(c == "/"){
continue;
}
temp = c;
count = 1;
if(i==len-1){
uotput(c);
break;
}
}else if(temp != c){
uotput(temp);
if(c == "/"){
count = 0;
temp = "";
}else {
count = 1;
temp = c;
if(i==len-1){
uotput(c);
break;
}
}
}else {
count++;
if(i==len-1){
uotput(c);
}
}
}else {
if(c == "/"){
continue;
}
sb += c;
}
}
console.log(sb);
function uotput( str){
let strIndex = Number(str);
if(strIndex==0){
sb += " ";
}else {
let strLen = strings[strIndex].length;
let index = count%strLen == 0 ? strLen-1 : count%strLen-1;
sb += strings[strIndex].charAt(index);
}
}
报数游戏
let n = Number(readLine());
let list = [];
for(let i=1;i<=100;i++){
list.push(i);
}
let i=n-1;
while (list.length>=n){
list.splice(i,1);
i--;
i = i+n<list.length ? i+n : i+n-list.length;
}
console.log(list);
叠积木
let strings = readLine().split(" ");
let list = [];
let count = 0;
let len = strings.length;
for(let i=0;i<len;i++){
let n = Number(strings[i]);
count += n;
list.push(n);
}
list.sort((a,b)=>{return a-b});
let min = list[len-1];
let max = list[0] + list[len-1];
let res = -1;
for(let i=min;i<=max;i++){
if(count%i==0){
let copyList = copyArr(list);
if(isSuccess(copyList,i)){
res = count/i;
break;
}
}
}
console.log(res);
function copyArr(list){
let len = list.length;
let copyList = [];
for(let i=0;i<len;i++){
copyList.push(list[i]);
}
return copyList;
}
function isSuccess(list, n){
let isTrue = true;
while (list.length >0 && isTrue){
let i = list.length-1;
if(n==list[i]){
list.splice(i,1);
}else if(n == list[i]+list[0]){
list.splice(i,1);
list.splice(0,1);
}else {
isTrue = false;
}
}
return isTrue;
}
工号不够用了怎么办
function getWorkNum(total,charNum) {
if(total <= 26) {
return 1
}
let del = 1 ;
for(let i = 0 ; i < charNum ; i++) {
del*=26
}
let r = 1 ;
del*=10;
while(del < total) {
del *= 10 ;
r++ ;
}
return r
}
console.log(getWorkNum(260,1))
构成的正方形的数量
let n = Number(readLine());
let list = [];
for(let i=0;i<n;i++){
let ints = readLine().split(" ").map(i=>parseInt(i));
list.push(ints);
}
let count = 0;
let len = list.length;
if(len>3){
for(let i=0;i<len-3;i++){
for(let j=i+1;j<len-2;j++){
for(let k=j+1;k<len-1;k++){
for(let l=k+1;l<len;l++){
if(isZFX(list[i],list[j],list[k],list[l])){
count++;
}
}
}
}
}
}
console.log(count);
function isZFX( a, b, c, d){
let list = [];
list.push(a);
list.push(b);
list.push(c);
list.push(d);
let map = [];
let temp = 0;
let count = 0;
for(let i=0;i<3;i++){
for(let j=i+1;j<4;j++){
let x = list[i][0]-list[j][0];
let y = list[i][1]-list[j][1];
let len = x*x + y*y;
temp = len;
if(map[temp]!=undefined){
map[temp] = map[temp]+1;
}else{
map[temp] = 1;
count++;
}
}
}
if(count ==2 && (map[temp]==2 || map[temp]==4)){
return true;
}
return false;
}
根据某条件聚类最少交换次数_
let ints = readLine().split(" ").map(Number);
let n = Number(readLine());
let len = ints.length;
let num = 0;
for(let i=0; i<len; i++){
if (ints[i] < n) {
num++;
}
}
let res = Number.MAX_VALUE;
for(let i=0; i<len-num+1; i++){
let count = 0;
for(let j=0; j<num; j++){
if(ints[i+j]>=n){
count++;
}
}
res = Math.min(res, count);
}
console.log(res);
跳格子游戏
let n = Number(readLine());
let list = []
while (readLine()){
list.push(readLine().split(" ").map(Number));
}
let isTrue = true;
let len = list.length;
for (let i=0;i<len;i++){
if(isBH(list[i])){
isTrue = false;
break;
}
}
console.log(isTrue ? "yes" : "no");
function isBH( listC){
for(let i=0; i<list.length; i++){
let temp = list[i];
if(temp[0] == listC[listC.length-1]){
if(listC.includes(temp[1])){
return true;
}
listC.push(temp[1]);
isBH(listC);
}
}
return false;
}
找最小数
function removeKdigits(num, k) {
let n = num.length
if (n <= k) return '0'
let stack = []
for (let i = 0; i < n; i++) {
while (k && stack.length && num[i] < stack[stack.length - 1]) {
k--
stack.pop()
}
if (stack.length || num[i] !== '0') {
stack.push(num[i])
}
}
while (k--) stack.pop()
return stack.join('') || '0'
};
console.log(removeKdigits('10200', 1))