java中使用压缩算法
能给我敲一个压缩算法吗?比如:1,1,1替换为0,1,3,其中替换后的第一位0是不变的,也就是个标识,第二位是被替换的数,第三位是被替换数的个数...
能给我敲一个压缩算法吗?比如:1,1,1 替换为 0,1,3,
其中替换后的第一位0是不变的,也就是个标识,第二位是被替换的数,第三位是被替换数的个数 展开
其中替换后的第一位0是不变的,也就是个标识,第二位是被替换的数,第三位是被替换数的个数 展开
展开全部
public ArrayList fun(int[] arr) {
//我只考虑正整数的情况
ArrayList<Integer> list = new ArrayList<Integer>();
int flag = -1;
int ct = 0;
for(int i=0;i<arr.length;i++) {
if(arr[i]!=flag) {
if(ct!=0) {
list.add(ct);
ct = 0;
}
flag = arr[i];
list.add(0);
list.add(arr[i]);
}
ct++;
}
list.add(ct);
return list;
}
//我只考虑正整数的情况
ArrayList<Integer> list = new ArrayList<Integer>();
int flag = -1;
int ct = 0;
for(int i=0;i<arr.length;i++) {
if(arr[i]!=flag) {
if(ct!=0) {
list.add(ct);
ct = 0;
}
flag = arr[i];
list.add(0);
list.add(arr[i]);
}
ct++;
}
list.add(ct);
return list;
}
追问
如果不是连续出现的三个数字,那就复制原始数据。比如1,1,1,2,替换为:0,1,3,2
这个可以实现么…
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询