删除K个数字,使得删除后的数字组成的数尽可能小

    xiaoxiao2022-07-14  140

    package test.com; import java.util.Arrays; //需求:删除K个数字,使得删除后的数字尽可能小 public class Hui05_Delete_K_Value { public static int[] backMinNum(int[] array, int k){ int high = -1; int index = 0; while (k != 0){ high = array[index]; //高位 int i; boolean flag = true; for (i = index+1; i < array.length - 1; i++) { if(high > array[i]){ array[index] = -1; flag = false; break; }else break; } if(flag == true){ int pos = -1; for (int j = index; j < array.length - 1 ; j++) { if(array[j] > array[j+1]){ pos = j; array[pos] = -1; break; } } if(pos != j && array[array.length-1] >= array[array.length-2]){ array[array.length-1] = -1; //删除最后一个数 } } index++; k--; } return array; } public static void main(String[] args) { //存在的问题就是,需要将数组中的-1去除,否则可能影响下一次的判断 //这里为了省事,没有将-1去除 int[] arr = {5,4,1,2,7,0,9,3,6}; System.out.println(Arrays.toString(arr)); int[] arrMin = backMinNum(arr, 4); //[-1, -1, 1, -1, -1, 0, 9, 3, 6] System.out.println(Arrays.toString(arrMin)); System.out.println("========================"); int[] arr3 = {5,5,5,5,9}; int[] arr4 = {5,5,4,5,9}; System.out.println(Arrays.toString(arr3)); int[] arr4Min = backMinNum(arr3, 1); System.out.println(Arrays.toString(arr4Min)); } }

    修改版

    public class Code09_Delete_K_Value { public static String backMinNum(String num, int k){ String numNew = num; while (k != 0){ boolean flag = false; for (int i = 0; i < num.length() - 1; i++) { if(numNew.charAt(i) > numNew.charAt(i+1)){ //将第i个元素删除 numNew = numNew.substring(0,i) + numNew.substring(i+1, numNew.length()); flag = true; break; } } if(!flag){ //删除最后一个数 numNew = numNew.substring(0, numNew.length()-1); } //清除整数左侧为0的数 //numNew = removeZero(numNew); if(numNew.length() == 0) return "0"; k--; } return numNew; } public static String removeZero(String num){ /* * */ return num; } public static void main(String[] args) { String num = "541270936"; System.out.println(num); String arrMin = backMinNum(num, 3); System.out.println(arrMin); System.out.println("========================"); String num2 = "55559"; System.out.println(num2); String arr2Min = backMinNum(num2, 1); System.out.println(arr2Min); } }
    最新回复(0)