牛客春招刷题训练营 3月13日 Java 提取不重复的整数 句子逆序 迷宫问题

#牛客春招刷题训练营# + https://www.nowcoder.com/discuss/726480854079250432

题目地址

https://www.nowcoder.com/practice/253986e66d114d378ae8de2e6c4577c1?channelPut=w25springcamp

https://www.nowcoder.com/practice/48b3cb4e3c694d9da5526e6255bb73c3?channelPut=w25springcamp

https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc?channelPut=w25springcamp

提取不重复的整数

开一个单独的 boolean 数组记录当前元素是否出现

如果已经出现过了

如果没有出现 输出 更新数组状态

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) {
            boolean arr[]=new boolean[10]; // 注意 while 处理多个 case
            String str=in.next();
            for(int i=str.length()-1;i>=0;i--){
                if(arr[str.charAt(i)-'0']==false){
                    System.out.print(str.charAt(i));
                    arr[str.charAt(i)-'0']=true;
                }    
            }
        }
    }
}

句子逆序

要注意 Java 读取一行字符串

String str=in.nextLine();

逆序输出数组即可

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { 
            // 注意 while 处理多个 case
            String str=in.nextLine();
            String[] arr=str.split(" ");
            for(int i=arr.length-1;i>=0;i--){
                System.out.print(arr[i]+" ");
            }
        }
    }
}

迷宫问题

递归 DFS 记忆化搜索

四个方向

辅助数组 visited

如果访问过了 就无需再访问

注意要回溯状态

到达终点后回溯状态

每一次递归结束后回溯状态

import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    static List<int[]> list;
    static int n;
    static int m;
    static int arr[][];
    static boolean visited[][];
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) {
            ArrayList<int[]>ansList=new ArrayList<>();
            n=in.nextInt();
            m=in.nextInt();
            arr=new int[n][m];
            visited=new boolean[n][m];
            for(int i=0;i<n;i++){
                for(int j=0;j<m;j++){
                    arr[i][j]=in.nextInt();
                }
            }
            dfs(0,0,ansList);
            for(int arr[]:list){
                System.out.print("("+arr[0]+","+arr[1]+")");
                System.out.println("");
            }
        }
    }
    // 当前横坐标 当前纵坐标 存点
    private static void dfs(int i,int j,ArrayList<int []>anslist){
        // 递归出口
        if(i<0||j<0||i>n-1||j>m-1||arr[i][j]==1||visited[i][j]==true){
            return;
        }
        anslist.add(new int[]{i,j});
        visited[i][j]=true;
        if(i==n-1&&j==m-1){
            list=new ArrayList<>(anslist);
            visited[i][j]=false;
            anslist.remove(anslist.size()-1);
            return;
        }
        // 递归函数
        dfs(i+1,j,anslist);
        dfs(i,j+1,anslist);
        dfs(i-1,j,anslist);
        dfs(i,j-1,anslist);
        visited[i][j]=false;
        anslist.remove(anslist.size()-1);
    }
}
#牛客春招刷题训练营##牛客创作赏金赛#
牛客算法 校招 Java 合集 文章被收录于专栏

Java写算法

全部评论

相关推荐

02-19 00:39
未填写教育信息
最近在牛客网上看到很多关于“外包毁简历”的讨论,作为一个收到过无数外包简历的过来人,我想说:**外包经历&nbsp;≠&nbsp;职场污点!**&nbsp;**1.&nbsp;外包经历的优势:***&nbsp;**快速积累项目经验:**&nbsp;外包公司通常项目多、节奏快,能在短时间内接触不同行业、不同类型的项目,快速积累实战经验。*&nbsp;**提升技术能力:**&nbsp;很多外包公司会承接一些技术难度较高的项目,这对于提升技术能力、拓展技术栈非常有帮助。*&nbsp;**锻炼沟通协作能力:**&nbsp;外包项目通常需要与甲方、团队内部密切沟通协作,这对于提升沟通能力、团队协作能力非常有帮助。**2.&nbsp;外包经历的劣势:***&nbsp;**缺乏归属感:**&nbsp;外包员工通常不属于甲方公司正式员工,可能会缺乏归属感和认同感。*&nbsp;**职业发展受限:**&nbsp;一些外包公司缺乏完善的晋升机制和培训体系,员工的职业发展可能会受到限制。*&nbsp;**薪资福利待遇相对较低:**&nbsp;外包员工的薪资福利待遇通常低于甲方正式员工。**3.&nbsp;🌸&nbsp;OD&nbsp;vs&nbsp;外包,谁更香?***&nbsp;**🌸OD:**&nbsp;🌸OD(Outsourcing&nbsp;Dispatcher)是一种人才派遣模式,OD员工与#华为od#&nbsp;正式员工同工同酬,享受同等福利待遇,但劳动关系在第三方公司。*&nbsp;**外包:**&nbsp;外包员工与甲方公司没有劳动关系,薪资福利待遇通常低于甲方正式员工。**4.&nbsp;如何看待外包经历?***&nbsp;**理性看待,不要被偏见左右。**&nbsp;外包经历只是你职业生涯的一部分,并不能定义你的全部价值。*&nbsp;**扬长避短,突出自身优势。**&nbsp;在简历和面试中,要重点突出你在外包公司积累的项目经验、技术能力和沟通协作能力。*&nbsp;**不断提升自身能力,为未来做好准备。**&nbsp;无论身处何种环境,都要保持学习的态度,不断提升自身能力,为未来的职业发展做好准备。**5.&nbsp;给正在考虑外包工作的朋友一些建议:***&nbsp;**选择正规、有实力的外包公司。**&nbsp;尽量选择规模较大、口碑较好的外包公司,这样才能获得更好的项目资源和职业发展机会。*&nbsp;**明确自己的职业目标和发展方向。**&nbsp;在选择外包项目时,要结合自己的职业目标和发展方向,选择能够提升自身能力的项目。*&nbsp;**保持积极的心态,不断提升自身能力。**&nbsp;外包工作只是你职业生涯的一个阶段,保持积极的心态,不断提升自身能力,才能为未来的职业发展创造更多机会。**最后,我想说:**&nbsp;职场没有绝对的“好”与“坏”,关键在于你如何利用这段经历,不断提升自身价值。与其纠结于“外包毁简历”的偏见,不如行动起来,用实力证明自己!#职场干货# #求职# #华为od# #职业发展# #外包到底能不能去#
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务