9.25用友笔试

题目见上。
第一题直接用链表模拟了。
就用Java的LinkedList实现,怎么实现环形呢,直接把头元素取出再加到尾,这就是环了
    public int shrinkCircle (int[] circle) {
        //用链表模拟
        LinkedList<Integer> data = new LinkedList<>();
        //原来要从1开始找
        int i = 0;
        for(; i < circle.length; i++){
            if(circle[i] == 1){
                break;
            }
            data.addLast(circle[i]);
        }
        //出来的时候i是1的位置,那再从末尾元素加到i的位置
        for(int j = circle.length - 1; j >= i; j--){
            data.addFirst(circle[j]);
        }
        //这样子出现的就是
        //1到末尾元素,第一个元素到1的之前
        int remainder = 1;
        while(data.size() > 1){
            Integer temp = data.removeFirst();
            if(temp % 4 == remainder){
                remainder++;
                if(remainder == 4){
                    remainder = 0;
                }
                //符合条件就不要加回去了,就从环中剔除了该元素
                continue;
            }
            data.addLast(temp);
        }
        //只剩最后一个了
        return data.getFirst();
    }
第二题,是力扣62题不同路径和牛客这题的进阶
不同路径的数目(一)_牛客题霸_牛客网 (nowcoder.com)
只是难以使用递推的方式递推(反正我没想出来),直接记忆化搜索解决问题吧。
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * @param x int整型 目标点的X坐标
     * @param y int整型 目标点的Y坐标
     * @param z int整型 目标点的Z坐标
     * @return long长整型
     */
    public long countPaths (int x, int y, int z) {
        long[][][] memo = new long[x + 1][y + 1][z + 1];
        //base case
        //从起点到起点只有一种路径,那就是站着不动,这就是唯一的base case
        memo[0][0][0] = 1;
        return dp(memo, x, y, z);
    }
    //采用记忆化搜索的办法
    private long dp(long[][][] memo, int x, int y, int z){
        //dp含义,从0,0,0到x,y,z的路径数量
        //状态转移
        //依据题意,每次都只能沿着三条坐标轴之一移动一个方向,所以到达x,y,z这个点的,只可能有这三种情况
        //从x-1,y,z过来,从x,y-1,z过来,从x,y,z-1过来
        //因此状态转移方程为
        //dp[x][y][z] = dp[x-1][y][z] + dp[x][y-1][z] + dp[x][y][z-1]
        if(x == -1 || y == -1 || z == -1){
            return 0;
        }
        if(memo[x][y][z] != 0){
            return memo[x][y][z];
        }
        //只能从三个方向而来
        long res = dp(memo, x - 1, y, z) + dp(memo, x, y - 1, z) + dp(memo, x, y, z - 1);
        memo[x][y][z] = res;
        return memo[x][y][z];
    }


第三题,力扣300题最长递增子序列原题。牛客上此题连接:最长上升子序列(一)_牛客题霸_牛客网 (nowcoder.com)
    public int lengthOfLIS(int[] nums) {
        //dp数组的含义为,dp[i]的值是以nums[i]结尾的最长递增子序列长度
        //base case为dp[i] = 1,因为递增子序列最少包括自身,自然长度为1
        //状态转移
        //从左往右找,限定j为0到i-1之间
        //当nums[i] > nums[j]
        //dp[i] = MAX { dp[j] + 1 , dp[i] }
        int[] dp = new int[nums.length];
        int res = 1;
        Arrays.fill(dp , 1);
        for(int i = 1; i < dp.length; i++){
            for(int j = 0; j < i; j++){
                if(nums[i] > nums[j]){
                    dp[i] = Math.max(dp[i] , dp[j] + 1);
                }
            }
            res = Math.max(dp[i] , res);
        }
        return res;
    }


#用友校招##用友##用友2022届校园招聘#
全部评论
兄弟手撕嘛?
点赞 回复 分享
发布于 2022-11-02 10:37 四川
抄一抄
点赞 回复 分享
发布于 2022-09-26 16:37 江西
同学同花顺尝试一下吗,面试简单不造火箭,可保姆式全程跟进度,我帖子有内推
点赞 回复 分享
发布于 2022-09-25 20:01 浙江

相关推荐

评论
2
8
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
7177次浏览 66人参与
# 你的实习产出是真实的还是包装的? #
1396次浏览 34人参与
# 米连集团26产品管培生项目 #
5066次浏览 206人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7186次浏览 38人参与
# 简历第一个项目做什么 #
31388次浏览 317人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186612次浏览 1116人参与
# 巨人网络春招 #
11236次浏览 223人参与
# 研究所笔面经互助 #
118806次浏览 577人参与
# 面试紧张时你会有什么表现? #
30431次浏览 188人参与
# 简历中的项目经历要怎么写? #
309712次浏览 4171人参与
# AI时代,哪些岗位最容易被淘汰 #
62931次浏览 760人参与
# 职能管理面试记录 #
10749次浏览 59人参与
# 网易游戏笔试 #
6391次浏览 83人参与
# 腾讯音乐求职进展汇总 #
160477次浏览 1107人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
7054次浏览 155人参与
# 正在春招的你,也参与了去年秋招吗? #
362899次浏览 2633人参与
# 你怎么看待AI面试 #
179553次浏览 1193人参与
# 小红书求职进展汇总 #
226958次浏览 1357人参与
# 你觉得通信/硬件有必要实习吗? #
155407次浏览 1065人参与
# 从哪些方向判断这个offer值不值得去? #
56717次浏览 357人参与
# 校招笔试 #
468348次浏览 2957人参与
# 你的房租占工资的比例是多少? #
92165次浏览 896人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务