`

算法题(1)

 
阅读更多

参考:十道简单算法题java打印杨辉三角String和字符数组互转

 

public class Test {

    /**
     * 1-n的阶乘之和
     */
    public static int Factorial(int n) {
        if(n==1){
            return 1;
        }else{
            return Factorial(n-1)*n;
        }
    }

    /**
     * 求出二维数组每列的最小值
     */
    public static int[] minArray(int[][] arr) {
        int[] res = new int[arr.length];
        for (int i=0;i<res.length;i++){
            int[] s = arr[i];
            int min = s[0];
            for (int j=0;j<s.length;j++){
                if(s[j]<min){
                    min = s[j];
                }
            }
            res[i] = min;
        }
        return res;
    }

    /**
     * 求出二维数组每列的最小值
     */
    public static int[] minArray1(int[][] arr) {
        int[] res = new int[arr.length];
        for (int i=0;i<res.length;i++){
            int[] s = arr[i];
            Arrays.sort(s);
            res[i] = s[0];
        }
        return res;
    }

    /**
     * 求"1!+4!(2的平方)+9!(3的平方)+...+n的值
     */
    public static int calculate(int n) {
        if(n==1){
            return 1;
        }else{
            return (int)(calculate(n-1)+ Math.pow(n,2));
        }
    }

    /**
     * 数组对角线之和
     */
    public static int arraySum(int[][] arr) {
        int sum = 0;
        StringBuffer sb1 = new StringBuffer();
        StringBuffer sb2 = new StringBuffer();
        for (int i=0;i<arr.length;i++){
            sum+=arr[i][i];//左上到右下
            sb1.append(arr[i][i]);
            sum+=arr[i][arr.length-1-i];//右上到左下
            sb2.append(arr[i][arr.length-1-i]);
            if(arr.length-1-i == i){ //去掉重复点
                sum -= arr[i][i];
                System.out.println("去掉重复点:"+i+","+i);
            }
        }
        System.out.println("对角线分别为:"+sb1+"和"+sb2);
        return sum;
    }

    /**
     * 打印杨辉三角
     *
     * 原理
     * 1.每个数等于它上方两数之和
     * 2.第n行的数字有n个
     **/
    public static void yangHui(int n) {
        int[][] a = new int[n][n];

        for (int i = 0; i < n; i++) {
            //格式化输出
            System.out.format("%" + (n - i) * 2 + "s", "");
            for (int j = 0; j <= i; j++) {
                if (j == 0 || j == i) {
                    a[i][j] = 1;
                } else {
                    a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
                }

                System.out.format("%4d", a[i][j]);
            }

            System.out.println();
        }
    }

    /**
     * 猴子吃桃问题
     * @param x 天数
     */
    public static int monkeyQue(int x) {

        if (x <= 0) {
            return 0;

        } else if (x == 1) {
            return 1;

        } else {
            return 2 * monkeyQue(x - 1) + 2;
        }

    }

    /**
     * 输入一段字符,计算出里面单词的个数
     *
     * @param str 一段文字
     */
    public static int countWord(String str) {
        String[] arr = str.split(" ");
        return arr.length;
    }

    /**
     * 给定两个字符串s和t,判断这两个字符串中的字母是不是完全一样(顺序可以不一样)
     */
    public static void isAnagram(String s,String t) {
        s = stringSort(s);
        t = stringSort(t);
        if(s.equals(t)){
            System.out.println("相同");
        }else{
            System.out.println("不相同");
        }
    }

    /**
     * 把字符串转为数组排序后字符串输出
     * @param str
     * @return
     */
    public static String stringSort(String str){
        char[] arr = str.toCharArray();
        Arrays.sort(arr);
        str = String.copyValueOf(arr);
        System.out.println("排序后:"+str);
        return str;
    }

    /**
     * 判断是否是2的某次方
     */
    public static void isPowerOfTwo(int num) {
        if (num <= 0) {
            System.out.println("不是");
        }else{
            while (num % 2 == 0) {
                num = num / 2;
            }

            if (num == 1) {
                System.out.println("是");
            } else {
                System.out.println("不是");

            }
        }
    }

    /**
     * 判断一个数字是不是ugly number(分解出来的质因数只有2、3、5这3个数字)
     * @param num
     */
    public static void isUgly(int num) {
        if (num <= 0) {
            System.out.println("不是");
        } else {
            while (num % 2 == 0) {
                num = num / 2;
            }
            while (num % 3 == 0) {
                num = num / 3;
            }
            while (num % 5 == 0) {
                num = num / 5;
            }
            if (num == 1) {
                System.out.println("是");

            } else {
                System.out.println("是");

            }
        }
    }

    public static void main(String[] args) {
        System.out.println("3的阶乘之和:"+Factorial(3));

        int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
        System.out.println("求出二维数组每列的最小值:"+Arrays.toString(minArray(arr)));
        System.out.println("求出二维数组每列的最小值:"+Arrays.toString(minArray1(arr)));
        System.out.println("求1!+4!(2的平方)+9!(3的平方)的值:"+calculate(3));
        System.out.println("数组对角线之和-----");
        System.out.println("数组对角线之和:"+arraySum(arr));
        System.out.println("打印杨辉三角------------- ");
        yangHui(10);
        System.out.println("猴子吃桃问题:"+monkeyQue(10));
        String str = "hello world";
        System.out.println("单词的个数:"+countWord(str));
        System.out.println("判断这两个字符串中的字母是不是完全一样-----");
        isAnagram("acbd","abdc");
        System.out.println("判断是否是2的某次方-----");
        isPowerOfTwo(8);
        System.out.println("判断一个数字是不是ugly number-----");
        isUgly(15);
    }
}

 

 

 

分享到:
评论

相关推荐

    字节跳动最爱考的 64 道算法题1

    《字节跳动最爱考的 64 道算法题1》这篇文章是关于准备面试时,特别是针对字节跳动等大厂面试所必备的算法题目的汇总。作者通过自己的面试经历,精选了64道高频率出现的算法题,并按照不同的数据结构和算法类型进行...

    Java算法集题大全.zip

    Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法...

    LetCode简单算法题 入门算法题

    算法 ,简单 入门 LeetCode网站开放的简单算法题,用于平时检验自己的算法能力,程序设计.

    java的算法题(一)

    共有7个 很不错的java算法题 共有7个 很不错的java算法题 共有7个 很不错的java算法题 共有7个 很不错的java算法题 共有7个 很不错的java算法题 共有7个 很不错的java算法题

    算法题 算法题

    算法题算法题算法题算法题

    ACM算法题100题-经典算法库

    根据给定文件的信息,我们可以提炼出与ACM算法题及经典算法库相关的多个知识点。以下是对这些知识点的详细解析: ### ACM国际大学生软件大赛简介 ACM(Association for Computing Machinery)国际大学生软件大赛是...

    经典算法题大全

    【标题】"经典算法题大全"揭示了这个压缩包的核心内容——它是一个包含大量算法问题的集合,专门针对像蓝桥杯这样的编程竞赛。蓝桥杯是中国一项知名的计算机编程比赛,旨在提升参赛者的算法设计与实现能力。这些题目...

    华为OD真机算法题(含答案)

    华为OD真机算法题(含答案) 知识点一、货币兑换问题 在华为OD真机算法题中,出现了货币兑换问题,即如何根据给定的汇率实现货币的最大兑换和最小兑换。这种问题可以用到 Graph Theory 中的最短路径算法来解决。 ...

    java笔试常见的算法题

    全排序、二分查找、冒泡排序、阶乘、最大公约数、最小公倍数、...这是里面包含的算法,本人在准备笔试的时候找的,算法尽量采用最优的。 所有的代码均经过测试,个人觉得没有问题,如果哪位大牛找到错误,欢迎批评指正

    C语言算法题合集.zip

    C语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法...

    中山大学遗传算法基本习题

    中山大学遗传算法基本习题

    java经典算法90题含源码及答案.rar

    通过解决这些算法题,开发者可以锻炼逻辑思维,理解和掌握数据结构,如数组、链表、栈、队列、树、图等,以及排序、搜索、图论、动态规划等核心算法。 在JAVA经典算法40题.doc中,可能包含的题目类型有递归、分治、...

    java经典算法题

    Java经典算法题是程序员在开发过程中常常需要面对的挑战,它们可以帮助我们提升编程思维,优化问题解决能力,尤其是在处理复杂数据结构和高效计算时显得尤为重要。这个压缩包中包含了一份名为"JAVA经典算法40题.doc...

    java常见算法题解析大全。

    在这个“java常见算法题解析大全”中,你将找到一系列涵盖不同难度级别的算法问题,旨在帮助Java开发者提升技能,增强解决问题的能力。 首先,让我们了解一下折半查找(Binary Search)算法。这是一种在有序数组中...

    常见面试算法题

    "常见面试算法题"这一主题涵盖了编程面试的核心部分,旨在帮助求职者准备这些关键的挑战。下面将详细讨论相关知识点。 1. **算法基础**:算法是解决问题的步骤集合,面试中常见的包括排序算法(如冒泡、选择、插入...

    jxkun#blog#string算法题1

    1.1 字符串题特点 1.2 需要掌握的概念 1.3 基本操作 2.1 规则判断 2.2 数字运算 2.3 与数组操作有关的类型 2.4 字符计数 2.5 动态

    软件工程师经典笔试算法题

    软件工程师经典笔试算法题 软件工程师经典笔试算法题是软件工程师面试中经常出现的算法笔试题,这篇文章将从六个方面对软件工程师经典笔试算法题进行详细的讲解。 一、将一整数逆序后放入一数组中 这个算法题考察...

    面试常见算法题

    在IT行业的面试中,算法题是衡量候选人技术实力的重要标准之一。这些题目通常涉及数据结构、排序、查找、图论等多个领域,旨在测试应聘者的逻辑思维能力、问题解决能力和编程技巧。以下是一些常见的面试算法题及其...

    智能优化算法及程序、试题

    智能优化算法是现代计算技术中的一个重要分支,它模拟自然界中生物进化、群体行为或物理过程,来解决复杂问题的优化问题。这些算法广泛应用于工程设计、机器学习、数据分析等领域,因其能够处理非线性、多目标和高...

    C++面试题笔试题C++ 数据结构算法笔试题资料合集.zip

    C++面试题笔试题C++ 数据结构算法笔试题资料合集: 50个C、C++面试题.pdf C++ 数据结构、算法笔试题.docx C++基础面试题.docx C++开发工程师面试题库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案....

Global site tag (gtag.js) - Google Analytics