【字节面试题】小于n的最大数

标题
小于n的最大数
题目描述
给定一个数你,入23121;给定一个数组A如{2,4,9},求由A中元素组成的、小于n的最大数,如小于23121的最大数是22999

思路:
1、把数组排序
2、把int转换成字节数组,从第一个开始变量(如2),从数组中和元素相同的值
如果找到了这个位就用这个值,继续设置
如果找不到用比这个值小,最接近这个值的元素替代(比如3找不到用2代替),其他的用数组最大值(9)填充

不知道对不对,以下是代码

package com.example.providerdemo;public class Test {public static void main(String[] args) {int n = 23121;//{2,4,9} 22999String str = n+"";int[] nums = new int[]{2,4,9};char[] charArray = str.toCharArray();StringBuilder sb = new StringBuilder();for(int i = 0;i<charArray.length;i++){char c = charArray[i];int cInt = c-'0';int val = findValueOrLessValue(cInt,nums);if(val==cInt){sb.append(val);}else{sb.append(val);i++;while(i<charArray.length){sb.append(nums[nums.length-1]);i++;}}}System.out.println(sb.toString());}private static int findValueOrLessValue(int val,int[] nums) {int left = 0;int right = nums.length - 1;while(left<=right){int mid = (left + right)/2;if(mid>val){left = mid + 1;}else if(mid<val){right = mid -1;}else{return val;}}return nums[left];}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部