讨论/算法和数据结构/一道由实际工作转变而来的算法题/
一道由实际工作转变而来的算法题
public static void main(String[] args) {
    //将连续的数据取出,放置单独数组
    //注意:产生的数组个数是未知的,此处给定数据,实际不固定数据多少
    //结果如:int [] a={4,4,4,4,4,4} int b={2,2,2} int [] c={3,3,3,3} int d={4,4}
    int[] abc = {10,9,7,5,12,45,2,1,4,4,4,4,4,4,1,2,2,2,11,3,3,3,3,4,5,8,5,45,97,4,4};
    

}

希望可以得到答案,JAVA语言,使用流操作也可以

展开讨论

可以保存连续元素的个数,不需要保存整个相同元素的数组:
例如:

[4,4,4,4,4]保存为[4,5]表示5个4
[2,2,2,2]保存为[2,4]表示4个2

c++代码示例:

#include<map>
#include<vector>
#include<iostream>
using namespace std;

int main(){
    vector<int> t={10,9,7,5,12,45,2,1,4,4,4,4,4,4,1,2,2,2,11,3,3,3,3,4,5,8,5,45,97,4,4};
    int cnt=0;
    int ele = t[0];
    vector<pair<int,int>> re;
    for(int i=0;i<(t.size()+1);i++){
        if(i==(t.size())||t[i]!=ele){
            if(cnt>1) re.push_back({ele,cnt});
            ele=t[i];
            cnt=1;
        }
        else cnt++;
    }
    for(auto item:re){
        cout<<item.first<<" "<<item.second<<endl;
    }
    return 0;
}
1
展开全部 3 讨论