侧边栏壁纸
博主头像
惊羽博主等级

hi ,我是惊羽,前生物学逃兵,现系统工程沉迷者 . 贝壳签约工程师 , 曾被雇佣为 联拓数科 · 支付研发工程师 、京东 · 京东数科 · 研发工程师、中国移动 · 雄安产业研究院 · 业务中台技术负责人 .

  • 累计撰写 100 篇文章
  • 累计创建 14 个标签
  • 累计收到 9 条评论

算法练习(20) - 将一个交错数据合并为一个一维数组

惊羽
2021-07-14 / 0 评论 / 0 点赞 / 288 阅读 / 1,897 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-11-05,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

题目

编程题(20分钟)
将一个交错数据合并为一个一维数组
输入: strJaggedArray[][], 由多个一维数组(长度不定,个数不定)组成的交错数组
输出: strArray[], 由strJaggedArray[r][c]中的元素以"&"为分隔符拼合而成, 是strJaggedArray中数组元素的无重复组合(不考虑顺序)

举例:

输入: strJaggedArray[0]=new string[] {"we","are","student"};
      strJaggedArray[1]=new string[] {"say","what"};
输出: strArray[]={"we&say","we&what","are&say","are&what","student&say","student&what"}

输入: strJaggedArray[0]=new string[] {"cs","app"};
      strJaggedArray[1]=new string[] {"good","cool","dev"};
      strJaggedArray[2]=new string[] {"king","of","the","world"};
输出: strArray[]={"cs&good&king","cs&good&of","cs&good&the","cs&good&world","cs&cool&king","cs&cool&of","cs&cool&the","cs&cool&world",...}

题解

public class StrJaggedArray {

    public static void main(String[] args) {
        String[][] strJaggedArray = new String[2][3];
        String[] s1 = {"we","are","student"};
        strJaggedArray[0] =s1;
        String[] s2 = {"say","what"};
        strJaggedArray[1] = s2;
        Object[] strings = strJaggedArray(strJaggedArray);

    }

    private static Object[] strJaggedArray(String[][] strJaggedArray) {

        ArrayList<String> all = new ArrayList<>();

        HashSet<String> res = new HashSet<>();
        for ( String[] sArr: strJaggedArray) {
            for (String string : sArr) {
                all.add(string);
            }
        }
        int p1 = 0;
        for ( String[] sArr: strJaggedArray) {
            for (int i = 0; i < sArr.length; i++) {
                for (int j = 0; j < all.size(); j++) {
                    if(j < p1 || j >= p1 + sArr.length){
                        if(sArr[i].compareTo(all.get(j)) > 0){
                            res.add(sArr[i] + "&" + all.get(j) );
                        }else{
                            res.add(all.get(j) + "&" + sArr[i] );
                        }
                    }
                }
            }
            p1 = p1 + sArr.length;
        }
        System.out.println(res);
        return res.toArray();
    }
}
0
广告 广告

评论区