我是靠谱客的博主 风中老师,最近开发中收集的这篇文章主要介绍来也科技飞扬季笔试 2023 届秋招专场 java第一题(签到题)第二题第三题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第一题(签到题)

代码:

 public int[] twoSum(int[] nums, int target) {
        int[] out = new int[ 2 ];
        for ( int i = 0; i < nums.length; i ++ ) {
            for ( int j = 0; j < nums.length; j ++ ) {
                if ( j == i )
                    continue;
                if ( nums[ i ] + nums[ j ] ==target ) {
                    out[0] = i;
                    out[1] = j;
                    return out;
                }
            }
        }
        return out;
 }

第二题


思路:

总水量 = 所有的水池装的水之和 = 所有水池中的每个 i 位置的装水量相加之和

所有的水池是由 一跟柱子height[ i ] + 后面的第一根>=height[ i ] 的柱子组成的 

也就是说,水池的左边边界柱子(也是水池装水的最高高度),必须是后面还有高度不低于它的柱子才可以

 代码:

 public int trap( int[] height ) {
      if ( height.length == 1 || height.length == 0)
            return 0;
        int max = 0;
        int n = height.length;
        int h = height[ 0 ], hIndex = 0;
        // 遍历找出第一个樯的高度 != 0 的下标,因为只有在非0的墙后面才可能装水
        for( int k = 0; k < n; k ++ ) {
            if( height[ k ] != 0 ) {
                h = height[ k ];
                hIndex = k;
                for ( int i = k; i < n; i ++ ) {
                    System.out.print( i +"》");
                    boolean f = false;
                    if ( i == hIndex ) {
                        f = true;
                        h = height[ hIndex ];
                        int j = 0;
                        // 寻找后面比目前最高的墙还高的墙的下标
                        while ( h >= 0 ) {
                            boolean flag = false;
                            for (j = i + 1; j < n; j++) {
                                if (height[j] >= h) {
                                    hIndex = j;
                                    System.out.print("[" + hIndex + "]");
                                    flag = true;
                                    break;
                                }
                            }
                            if ( flag )
                                break;
                            // 后见没有比现在最高的高度h高的墙,就h--,再继续遍历后面的寻找
                            if (j == n) {
                                h --;
                                continue;
                            }
                        }
                    }

                    // 加上本i位置所能装的水量(最高的墙 - 本i位置的墙的高度)
                    if ( !f ) {
                        max += h - height[i];
                        System.out.print(h - height[i] + "  ");
                    }
                }
                break;  // 找到非0的墙后,break掉
            }
        }
        System.out.println();
        return max;
 }

 面试题 17.21. 直方图的水量

第三题

 思路:

        递归

代码(成功90%):

static List<List<Integer>> list = new ArrayList<>();
    String str = "";
    public List<List<Integer>> subsets(int[] nums) {

        for ( int j = 0; j < nums.length; j ++ ) {
            List<Integer> list1 = new ArrayList<>();
            list1.add( nums[ j ] );
            getResult( nums, list1, j + 1 );
        }
        getResult( nums, new ArrayList<>(), 0 );
        return list;

    }

    private void getResult(int[] nums, List<Integer> integerList, int i) {

        String s = "[";
        for( int j = 0; j < integerList.size(); j ++ ) {
            s += integerList.get( j );
        }
        s += "]";
        if( ! str.contains( s ) ) {
            str += s + "---";
            list.add(new ArrayList<>(integerList));
        }

        if ( i == nums.length )
            return;

        for ( int j = i; j < nums.length; j ++ ) {
            List<Integer> list2 = new ArrayList<>( integerList );
            list2.add( nums[ j ] );
            getResult( nums, list2, j + 1 );
        }
}

成功90%,最后一个用例显示解答错误,也不知道什么原因,也不应该是超时,因为我直接测试了最大范围的用例,运行时间27ms而已,哎不知道啥错误原因

最后

以上就是风中老师为你收集整理的来也科技飞扬季笔试 2023 届秋招专场 java第一题(签到题)第二题第三题的全部内容,希望文章能够帮你解决来也科技飞扬季笔试 2023 届秋招专场 java第一题(签到题)第二题第三题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部