Java算法
YY鸟
初学java
展开
-
Java算法--第四章--多维数组和矩阵(6)题目:子矩阵最大累加和
Java算法–第四章–多维数组和矩阵(6)题目:子矩阵最大累加和给定一个矩阵matrix,其中的值有正、有负、有0,返回子矩阵的最大累加和。例如,matrix为∶-1 -1 -1-1 2 2-1 -1 -1其中最大累加和的子矩阵为︰2 2所以返回4。代码:package matrix;import java.util.Arrays;public class MaxSubMatrix { public static void main(String[] args) { i原创 2021-04-17 14:54:30 · 292 阅读 · 0 评论 -
Java算法--第四章--多维数组和矩阵(5)题目:子数组最大累加和
Java算法–第四章–多维数组和矩阵(5)题目:子数组最大累加和给定一个数组arr,返回子数组的最大累加和例:arr=[1,-2,3,5,-2,6,-1];所有的子数组中[3,5,-2,6]可以累加出最大的和12,所以返回12代码:package matrix;public class MaxSumArray { public static void main(String[] args) { int[] arr = { 1, -2, 3, 5, -2, 6, -1 }; int m原创 2021-04-17 14:30:12 · 263 阅读 · 0 评论 -
Java算法--第四章--多维数组和矩阵(4)题目:边界为1的最大子方阵
Java算法–第四章–多维数组和矩阵(4)题目:边界为1的最大子方阵给定一个N×N的矩阵matrix,在这个矩阵中,只有O和1两种值,返回边框全是1的最大正方形的边长长度。例如∶{0,1,1,1,1},{0,1,0,0,1},{0,1,0,0,1},{0,1,1,1,1},{0,1,0,1,1}其中,边框全是1的最大正方形的大小是4*4,返回4代码:package matrix;public class MaxSquare { public static void main(Str原创 2021-04-17 13:16:32 · 336 阅读 · 0 评论 -
Java算法--第四章--多维数组和矩阵(3)题目:Z形打印
Java算法–第四章–多维数组和矩阵(3)题目:Z形打印代码:package matrix;public class PrintZMatrix { public static void main(String[] args) { int[][] matrix = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 },原创 2021-04-17 11:48:23 · 141 阅读 · 0 评论 -
Java算法--第四章--多维数组和矩阵(2)题目:0所在得行列清零
Java算法–第四章–多维数组和矩阵(2)题目:0所在得行列清零如果矩阵中某个元素为0,则将其所在的行和列清零1 2 3 45 6 0 89 0 11 1213 14 15 16变为:1 0 0 40 0 0 00 0 0 013 0 0 16代码:package matrix;import java.util.Arrays;public class ClearZeroInArr { public static void main(String[] args) { in原创 2021-04-17 10:36:04 · 80 阅读 · 0 评论 -
Java算法--第四章--多维数组和矩阵(1)顺时针打印二维数组
Java算法–第四章–多维数组和矩阵(1)顺时针打印二维数组代码:package matrix;public class Print20Arr { public static void main(String[] args) { int[][] matrix = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 }, { 21, 22, 23, 24, 25 }原创 2021-04-17 10:19:49 · 346 阅读 · 1 评论 -
Java算法--第三章--排序(19)题目:数组能排成的最小数(特殊排序)
Java算法–第三章–排序(19)题目:数组能排成的最小数(特殊排序)1.输入一个正整数数组,把数组里所有整数拼接起来排成一个数,打印出能拼接出的所有数字中最小的一个。2.例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字为:321323...原创 2021-04-16 20:29:41 · 120 阅读 · 0 评论 -
Java算法--第三章--排序(20)题目:数组的包含
Java算法–第三章–排序(20)题目:数组的包含输入两个字符串str1和str2,请判断str1中的所有字符是否都存在str2中代码:package sort;import java.util.Arrays;public class ContainAll { public static boolean check(String s1, String s2) { char[] s2_arr = s2.toCharArray(); Arrays.sort(s2_arr); for原创 2021-04-16 20:29:27 · 57 阅读 · 0 评论 -
Java算法--第三章--排序(14)概述
Java算法–第三章–排序(14)概述排序算法的总结:1.冒泡谁大谁上,每一轮都把最大的顶到天花板效率太低O(n2)–掌握swap选择排序,效率较低,但经常用它内部的循环方式来找最大值和最小值–怎么一次性求出数组的最大值和最小值2.插排虽然平均效率低,但是在序列基本有序时,它很快,所以也有其适用范围Arrays这个工具类在1.7里面做了较大改动3.希尔,是插排的改良,对空间思维训练有帮助4.快排是软件工业中最常见的常规排序法,其双向指针扫描和分区算法是核心,往往用于解决类似问题,特别地pa原创 2021-04-15 20:12:20 · 121 阅读 · 0 评论 -
Java算法--第三章--排序(3)归并排序
Java算法–第三章–排序(3)归并排序1.归并排序Merge Sort)算法完全依照了分治模式(1)分解:将n个元素分成各含n/2个元素的子序列;(2)解决:对两个子序列递归地排序;(3)合并:合并两个已排序的子序列以得到排序结果2.和快排不同的是:归并的分解较为随意,重点是合并代码:package sort;import java.util.Arrays;public class NormalizingSort { public static void main(String[]原创 2021-04-05 12:56:25 · 109 阅读 · 1 评论 -
Java算法--第三章--排序(1)分治法
Java算法–第三章–排序(1)分治法一、分治法1.分治法(divide and conquer, D&C)︰将原问题划分成若干个规模较小而结构与原问题一致的子问题﹔递归地解决这些子问题,然后再合并其结果,就得到原问题的解。2.容易确定运行时间,是分治算法的优点之一。3.分治模式在每一层递归上都有三个步骤(1)分解(Divide) :将原问题分解成一系列子问题;(2)解决(Conquer):递归地解各子问题。若子问题足够小,则直接有解;(3)合并(combine):将子问题的结果合并成原创 2021-04-03 18:46:24 · 226 阅读 · 1 评论 -
Java算法--第二章--查找与排序(10)题目:涉及一个高效的求a的n次幂的算法
Java算法–第二章–查找与排序(10)题目:涉及一个高效的求a的n次幂的算法原创 2021-04-03 15:50:46 · 87 阅读 · 0 评论 -
Java算法--第二章--查找与排序(8)题目:在有空字符穿的有序字符串数组中查找
Java算法–第二章–查找与排序(8)题目:在有空字符穿的有序字符串数组中查找题目:有个排序后的字符串数组,其中散布着一些空字符串,编写一个方法,找出给定字符串(肯定不是空字符串)的索引。...原创 2021-04-03 14:30:08 · 168 阅读 · 1 评论 -
Java算法--第二章--查找与排序(7)题目:旋转数组的最小数字(改造二分法)
Java算法–第二章–查找与排序(7)题目:旋转数组的最小数字(改造二分法)题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.代码:package section02;public class 旋转数组的最小数字 { public static void main(String[] args) { int[] arr = { 5原创 2021-03-31 16:10:08 · 106 阅读 · 0 评论 -
Java算法--第二章--查找与排序(6)题目:小白上楼梯(递归)
Java算法–第二章–查找与排序(6)题目:小白上楼梯(递归)题目:小白正在上楼梯,楼梯有n阶台阶,小白一次可以上1阶,2阶或者3阶,实现一个方法,计算小白有多少种走完楼梯的方式?代码:package section02;import java.util.Scanner;public class 小白上楼梯 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = s原创 2021-03-31 15:54:28 · 96 阅读 · 0 评论 -
Java算法--第二章--查找与排序(4)希尔排序
Java算法–第二章–查找与排序(4)希尔排序希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序思路:如序列 9 8 7 6 5 4 3 2 11.确定一个增量序列,如:4(length/2) 2 1,从大到小使用增量2.使用第一个增量,将序列化分为若干个子序列,下标组合为0-4-8,1-5,2-6,3-73.以此对子序列使用过直接插入排序法4.使用第二个增量,将序列华为若干个子序列(0-2-4-6-8),(1-3-5-7)5.以此对子序列使用这季节插原创 2021-03-29 20:22:38 · 96 阅读 · 0 评论 -
Java算法--第二章--查找与排序(3)二分法查找递归方法
Java算法–第二章–查找与排序(3)二分法查找递归方法全范围的二分查找等价于三个子问题:1.左边找(递归)2.中间比3.右边找(递归)注意:前提是所查找的内容必须是有序的,且左边和右边查找只取其中的一个分支代码:package section02;public class 二分法查找 { public static void main(String[] args) { int[] arr = new int[] { -98, -34, 2, 34, 54, 66, 79, 105原创 2021-03-28 14:12:01 · 120 阅读 · 0 评论 -
Java算法--第二章--查找与排序(2)递归基础--佩波那契&最大公约数&插入排序&汉诺塔
Java算法–第二章–查找与排序(2)递归基础原创 2021-03-28 13:44:16 · 131 阅读 · 0 评论 -
Java算法--第二章--查找与排序(1)递归基础
Java算法–第二章–查找与排序(1)递归基础1.阶乘2.打印i-j3.对arr的所有元素求和4.反转字符串package section02;public class java1 { public static void main(String[] args) { } /* * 阶乘: * 找重复:n*(n-1)的阶乘,求n-1的阶乘是原问题的重复(规模更小)----子问题 * 找变化:变化的量应该作为参数 * 找边界:出口 */ static int原创 2021-03-24 16:53:51 · 77 阅读 · 0 评论 -
Java算法--第一章--位运算符(8)出现k次与出现1次
Java算法–第一章–位运算符(8)出现k次与出现1次题目:数组中只有一个数出现了1次,其他的数都出现了k次,请输出只出现了1次的数。补充知识点:(1)2个相同的二进制数做不进位加法,结果为零;(2)10个相同的十进制数做不进位加法,结果位零;(3)k个相同的k进制数做不进制加法,结果为零代码:package exer1;public class 出现k次和出现1次 { public static void main(String[] args) { int[] ar原创 2021-03-22 20:03:04 · 263 阅读 · 0 评论 -
Java算法--第一章--位运算符(7)0~1间浮点实数的二进制表示
Java算法–第一章–位运算符(7)0~1间浮点实数的二进制表示题目:给定一个介于0和1之间的实数,(如0.625),类型为double,打印他的二进制表示(0.101,因为小数点后的二进制分别表示0.5,0.25,0.125……)。如果该数字无法精确的用32位以内的二进制表示,则打印“ERROR”代码:package exer1;public class 零一间浮点实数的二进制表示 { public static void main(String[] args) { d原创 2021-03-22 19:16:56 · 99 阅读 · 0 评论 -
Java算法--第一章--位运算符(6)将整数的奇偶位互换
Java算法–第一章–位运算符(6)将整数的奇偶位互换题目:将一个数的二进制形式中,奇偶位互换,得出新的一个数原创 2021-03-22 18:52:51 · 209 阅读 · 0 评论 -
Java算法--第一章--位运算符(5)是不是2的整数次方
Java算法–第一章–位运算符(5)是不是2的整数次方题目:用一条语句判断一个整数是不是2的整数次方(本方法:除2判断。。。)提示:2的整数次方在二进制中只有1个1代码 :package exer1;import java.util.Scanner;public class 是不是2的整数次方 { public static void main(String[] args) { Scanner sc = new Scanner(System.in);原创 2021-03-21 20:09:30 · 77 阅读 · 0 评论 -
Java算法--第一章--位运算符(4)二进制中1的个数
Java算法–第一章–位运算符(4)二进制中1的个数题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例:9的二进制表示为1001,有2位是1.方法1:package exer1;import java.util.Scanner;public class 二进制中1的个数 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int原创 2021-03-21 20:01:57 · 95 阅读 · 0 评论 -
Java算法--第一章--位运算符(2)唯一成对的数
题目:1-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,把它找出来;不用辅助存储空间,能否设计一个算法实现?(写的代码过于粗糙,还有很多地方有待改善……)代码:package exer1;import java.util.Random;public class 唯一成对的数 { public static void main(String[] args) { int N = 6;原创 2021-03-21 17:45:40 · 158 阅读 · 0 评论