找出N个数里面的最小K个 删数

在这里插入图片描述
思路:先排序,再根据K值进行输出

import java.util.*;
public class Main {
        public static  void main(String[] args){
            Scanner sc=new Scanner(System.in);
            String str=sc.nextLine();
            String[]  temp=str.split(" ");
            int[]  array=new  int[temp.length-1];
            //parseInt()将字符串转化为整数
            int k=Integer.parseInt(temp[temp.length-1].toString());
            for(int i=0;i<temp.length-1;i++){
                array[i]=Integer.parseInt(temp[i]);
            }
            int[]  a=number(array,k);
            StringBuffer  sb=new StringBuffer();
           // char[]  t=new char[a.length];
            for(int i=0;i<a.length;i++){
                sb.append(a[i]+" ");
            }
            System.out.println(sb.toString());
        }
        //也可采用for循环将元素输出
        public  static   int[]  number(int[]  arr,int k){
            Arrays.sort(arr);
            int[]  array=new   int[k];
            for(int i=0;i<k;i++ ){
                array[i]=arr[i];
            }
            return   array;
        }
}

删数
在这里插入图片描述
思路:
存放n个数,且都是从0到n-1的数字。因为每次删除的都是当前位置的后面第2个,那么我们就可以这样写:(i+2)%size; 当i==0的时候,
我们移除的就是2号下标,接着需要移除4号下标,那么新的i = (i+2)%size; 那么结束条件应该是什么?我们要找到存活的,显而易见当集合的size等于1的时候停止删除

import java.util.*;
public class Main1 {
    public static void main(String[] args) {
        Scanner sc=new  Scanner(System.in);
        while(sc.hasNext()){
            int k=sc.nextInt();
                List<Integer>    list=new  ArrayList<>();
            for(int i=0;i<k;i++){
            //把数组中元素添加到list中
                list.add(i);
            }
             int index=0;
             //list.size( )有效元素的个数
             while(list.size()>1){
                index=(index+2)%list.size();
                list.remove(index);
             }
             //list.get(i) 获取i号位置的元素
            System.out.println(list.get(0));
        }
    }
}

内存回收:
Java的Gc回收是完全自动,JVM类似上帝随机消亡一般,没有提供相关api手动回收,所有的内存分配和回收权限都在JVM,在开发人员手里没有绝对的强制垃圾回收的方法。但还是有一些不太可靠的方法来回收:下面的机制对于JVM来说都只起到建议的作用,谁都不能左右JVM,只有内存当事人才能左右。
1.对于不再引用的对象,及时把它的引用赋值为null,obj=null;这个是告示作用
2.如果内存已经很饱和了,也只能通过调用System.gc)来建议垃圾回收器开始回收垃圾,通知GC运行,但是Java语言规范并不保证GC一定会执行。这个也只是起到告知作用。

Junit主要用来单元测试

public class Test {
public static void main(String [] args){
System.out.println(new B().getValue());
}s
tatic class A{
protected int value;
public A(int v) {
setValue(v);
}p
ublic void setValue(int value){
this.value = value;
}p
ublic int getValue(){
try{
value++;
return value;
} catch(Exception e){
System.out.println(e.toString());
} finally {
this.setValue(value);
System.out.println(value);
}r
eturn value;
}
}s
tatic class B extends A{
public B() {
super(5);
setValue(getValue() - 3);
}p
ublic void setValue(int value){
super.setValue(2 * value);
}
}
}

22
34
17
当子类覆盖有父类的方法时,优先调用子类方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值