当前位置: 首页 > wzjs >正文

山西手动网站建设推荐平台大连高新园区行政服务大厅电话

山西手动网站建设推荐平台,大连高新园区行政服务大厅电话,中国市政建设局网站,网站域名注册步骤给定一个数字字符串S和一个数组nums,数组中的元素都在0~9之间,问从数组中选择元素组成的数字,小于N的最大值是多少? 例如:S “24378”,nums:{2,3,9},组成的最大值为23999。 import java.util.A…

给定一个数字字符串S和一个数组nums,数组中的元素都在0~9之间,问从数组中选择元素组成的数字,小于N的最大值是多少?
例如:S = “24378”,nums:{2,3,9},组成的最大值为23999。

import java.util.Arrays;public class Main {public static void main(String[] args) {/*示例 1:A={1, 2, 9, 4},n=2533,返回 2499。示例 2:A={1, 2, 5, 4},n=2543,返回 2542。示例 3:A={1, 2, 5, 4},n=2541,返回 2525。示例 4:A={1, 2, 9, 4},n=2111,返回 1999。示例 5:A={5, 9},n=5555,返回 999。*/// 示例1int[] a1 = {1, 2, 9, 4};int[] n1 = {2, 5, 3, 3};System.out.println("示例1:" + getMaxLessNum(a1, n1) + " (应返回2499)");// 示例2int[] a2 = {1, 2, 5, 4};int[] n2 = {2, 5, 4, 3};System.out.println("示例2:" + getMaxLessNum(a2, n2) + " (应返回2542)");// 示例3int[] a3 = {1, 2, 5, 4};int[] n3 = {2, 5, 4, 1};System.out.println("示例3:" + getMaxLessNum(a3, n3) + " (应返回2525)");// 示例4int[] a4 = {1, 2, 9, 4};int[] n4 = {2, 1, 1, 1};System.out.println("示例4:" + getMaxLessNum(a4, n4) + " (应返回1999)");// 示例5int[] a5 = {5, 9};int[] n5 = {5, 5, 5, 5};System.out.println("示例5:" + getMaxLessNum(a5, n5) + " (应返回999)");}/*** 获取由数组nums中的元素组成的数字,且小于n的最大值* @param nums 数组中的元素都在0~9之间* @param n 目标数字数组* @return 由nums中的元素组成的数字,且小于n的最大值*/public static String getMaxLessNum(int[] nums, int[] n) {// 对nums数组进行排序,方便后续查找最大值Arrays.sort(nums);// 用于存储结果数字的字符串StringBuilder s = new StringBuilder();// 深度优先搜索,寻找最大值dfs(true, s, nums, n, 0);return s.toString();}/*** 深度优先搜索,寻找最大值* @param equal 当前位是否与目标数字相等* @param s 用于存储结果数字的字符串* @param nums 数组中的元素都在0~9之间* @param n 目标数字数组* @param index 当前处理的位索引* @return 是否找到符合条件的数字*/private static boolean dfs(boolean equal, StringBuilder s, int[] nums, int[] n, int index) {// 如果是最后一位,则需要判定是否有小于n的数if (index == n.length - 1) {if (!equal) {// 如果前面已经有不相等的位,则直接取nums的最大值s.append(nums[nums.length - 1]);return true;} else {// 否则需要寻找小于n最后一位的最大值for (int i = nums.length - 1; i >= 0; i--) {if (nums[i] < n[n.length - 1]) {s.append(nums[i]);return true;}}return false;}}// 前面有不相等的,后面都取nums的最大值即可if (!equal) {for (int i = index; i < n.length; i++) {s.append(nums[nums.length - 1]);}return true;}// 前面都相等,优先取和n[index]相同的值,深度优先遍历,如果后面组成的数小于n,则找到了最大的值。如果当前值小于n[index],则后面都取nums的最大值即可for (int i = nums.length - 1; i >= 0; i--) {if (nums[i] == n[index]) {s.append(nums[i]);boolean result = dfs(true, s, nums, n, index + 1);if (result) {return true;} else {s.deleteCharAt(s.length() - 1); // 回溯,删除最后一个字符}}if (nums[i] < n[index]) {s.append(nums[i]);dfs(false, s, nums, n, index + 1); // 后续位都取最大值return true;}}// 如果前面都不满足,删除第一位即可if (index == 0) {dfs(false, s, nums, n, index + 1);return true;}return false;}
}

👨‍🏫 参考博客

http://www.dtcms.com/wzjs/833657.html

相关文章:

  • 版面设计网站俄罗斯的最新军事新闻
  • 视频直播网站哪里找人做网站
  • 怎么用电脑给域名做网站郑州建站价格
  • 开发网站的软件上海传媒公司总裁结婚
  • 炫酷的个人网站小程序源码多少钱
  • 莱芜百度网站建设网站建设监理
  • 网站建设找单wordpress 太原
  • 泰州网站开发公司简述网站规划的任务
  • 免费无广告建站北京综评网址
  • 哪里有网站建设的企业网站如何做淘宝推广
  • 推广计划怎么做推广是什么seo排名的公司
  • 网站与与云的关系常州网站关键字优化
  • 门户网站系统有哪些平台为什么现在好多人嘲讽做核酸
  • 网站怎么做vga头偃师做网站
  • 圣诞节网站模板wordpress支持什么语言包
  • 百度网站排名怎么做上海天华室内设计有限公司
  • 乐都区wap网站建设公司庆阳市建设局门户网站
  • 流行网站开发框架邯郸信息港招聘信息
  • 无锡新区规划建设环保局网站网站右边上下浮动代码
  • 如何给喜欢的明星做网站0元做网站
  • 怎样做才能让网站有排名苍溪县代码是多少
  • 注册网站域名需要什么汉中专业网站建设
  • php小说采集网站源码wordpress 鼠标翻页
  • 抚顺营销型网站建设物流网信息平台
  • ps做的网站首页oppo自带软件商店下载
  • 做苗木网站北京网站建设公司华网天下
  • 莱芜网站建设服务成都网站建设公司思乐科技
  • 域名访问网站的知识微信自己怎么创建公众号
  • 加强网站的建设工作商务网站规划设计要点
  • 建设商城网站费用网站模板中文乱码