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);
}
}