小红拿到长度为n的数组,陡峭值是相邻两数差的绝对值之和,求只修改第i个元素,让f(i)最小的各个陡峭值 import java.util.Scanner; public class Main {     public static void main(String[] args) {         Scanner in = new Scanner(System.in);         int n = in.nextInt();         long[] nums = new long[n];         for (int i = 0; i < n; i++) {             nums[i] = in.nextLong();         }         if (n == 1) {             System.out.print("0");             return;         }         long count = 0; // 默认陡峭值         for (int i = 1; i < n; i++) {             count += Math.abs(nums[i] - nums[i - 1]);         }         long[] result = new long[n];         for (int i = 0; i < n; i++) {             if (i == 0) {                 result[i] = count - Math.abs(nums[i + 1] - nums[i]);             } else if (i == n - 1) {                 result[i] = count - Math.abs(nums[i - 1] - nums[i]);             } else {                 long temp = Math.abs(nums[i] - nums[i - 1]) +                         Math.abs(nums[i] - nums[i + 1]) -                         Math.abs(nums[i - 1] - nums[i + 1]);                 result[i] = count - temp;             }         }         for (int i = 0; i < n; i++) {             System.out.print(result[i] + " ");         }     } }小红的字符串构造,每个小写字母都要出现至少两次,而且相同字母的最小距离刚好是k。 const fun = function (k) {     const arr = [         'a', 'b', 'c', 'd', 'e',         'f', 'g', 'h', 'i', 'j',         'k', 'l', 'm', 'n', 'o',         'p', 'q', 'r', 's', 't',         'u', 'v', 'w', 'x', 'y',         'z',         'a', 'b', 'c', 'd', 'e',         'f', 'g', 'h', 'i', 'j',         'k', 'l', 'm', 'n', 'o',         'p', 'q', 'r', 's', 't',         'u', 'v', 'w', 'x'     ]     let pos = 0     let str = ''     while (pos < 26) {         const temp = arr.slice(pos, pos + k).join("")         str += temp + temp         pos += k     }     console.log(str) } fun(1) fun(2) fun(3) fun(4)
点赞 7
评论 1
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务