
趣味算法
Jock.Liu
你以为失败的人生,也许是别人努力活着的结果!
展开
-
【Java面试题】编写一个程序,定义局部变量sum,并求出1+2+3+...+99+100之和,并赋值给sum,并输出sum的值
题目如下:编写一个程序,定义局部变量sum,并求出1+2+3+...+99+100之和,并赋值给sum,并输出sum的值。分析:局部变量:在一个函数(或称方法)或函数内代码块中定义的变量。使用时需注意。采用累加的方法进行运算,定义sum和i,i从0开始增加,sum从0开始加i,一直加到100。代码如下:package workspace;public class su...原创 2019-05-24 17:41:08 · 2278 阅读 · 1 评论 -
【Java】排序方法--快速排序
基本思想:快速排序(Quicksort)是对冒泡排序的一种改进。通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。算法描述:设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它左边,所有比它大的数都放到它右边...原创 2019-06-16 15:05:06 · 314 阅读 · 1 评论 -
【Java】List中存放若干学生对象(学生有学号,姓名等属性),去除List中重复的元素,并按学号降序输出。
需求List中存放若干学生对象(学生有学号,姓名等),去除List中重复的元素,并按学号降序输出。并利用LinkedHashSet集合,既不会重复,同时有可预测的顺序即输入顺序。补充Set接口的一个实现类LinkedHashSet。相对HashSet来说,LinkedHashSet存储结构是一个双向链表,因此它存储的元素是有序的。LinkedHashSet继承自HashSet,...原创 2019-06-16 17:44:24 · 1941 阅读 · 0 评论 -
【Java】获取二维数组每列最小的值
题目描述:从键盘中输入二维数组输出每列最小的值。分析:思路:遍历列,再遍历列中行分好列数 定义一个一位数组,用于输出得到的列的最小值 分列进行比较,循环查找,得到的数保存到以为数组中。代码实现:import java.util.Scanner;public class 列最小值 { public static void main(String[] args) {...原创 2019-06-20 22:49:15 · 3678 阅读 · 4 评论 -
【Java-概念】Map、Set集合存放是无序的,然而LinkedHashSet和LinkedHashMap等集合却有序,请解释是什么原因。
问题:Map、Set集合存放是无序的,然而LinkedHashSet和LinkedHashMap等集合却有序,请解释是什么原因。相关概念:Set集合:元素无序 (元素存取顺序不一致),元素不重复.Set集合保证元素的唯一性是靠重写HashCode()方法和equals()方法.HashSet,LinkedHashSet,TreesetHashSet:此类实现Set接口,由哈希...原创 2019-06-17 09:29:08 · 636 阅读 · 0 评论 -
【java】求1-n各阶乘之和
题目:1-n阶乘之和分析:1的阶乘是1 2的阶乘是1*2 3的阶乘是1*2*3 4的阶乘是1*2*3*4 .........思路:3阶乘的和其实上就是2阶乘的和+3的阶乘 4阶乘的和其实上就是3阶乘的和+4的阶乘 .......实现代码(递归思想):import java.util.Scanner;public class Test { public s...原创 2019-06-21 21:04:25 · 11232 阅读 · 0 评论 -
【Java】求二维数组对角线元素之和
题目:求二维数组对角线元素之和分析:只要行列相等,即就是对角元素了。代码实现:import java.util.Scanner;public class 二维数组对角元素 { public static int Sum(int[][] array) { int sum = 0; for (int i = 0; i < array[0].length; i+...原创 2019-06-21 21:20:53 · 16014 阅读 · 2 评论 -
线程练习||写两个线程,一个线程打印1~52,另一个线程打印A~Z,打印顺序是12A34B....5152Z
题目描述:写两个线程,一个线程打印1~52,另一个线程打印A~Z,打印顺序是12A34B....5152Z分析:两个线程,一个负责打印数字,一个负责打印字母,细心的我发现字母是26个,数字是52个,两者是2倍的关系,而且打印的结果中两个数(可以使十位的)配一个字母,所以可以利用循环进行打印,循环26次即可。这里我们用两个锁,用锁的目的就是线程各自进行,互不打扰,当到临界条件时,我不...原创 2019-06-25 20:27:54 · 2831 阅读 · 2 评论 -
线程练习||子线程循环2次,主线程循环2次,然后子线程循环2次,主线程循环2次,这样循环10次;
题目描述:子线程循环2次,主线程循环2次,然后子线程循环2次,主线程循环2次,这样循环10次;分析:两个线程,一个负责子循环两次,另外一个负责主循环两次,用两个锁,用锁的目的就是线程各自进行,互不打扰,当到临界条件时,我不能进行,你也不能进行,完成分配。实现代码class Test { private boolean flag = true;// 代表是否等待 publ...原创 2019-06-25 20:48:01 · 679 阅读 · 0 评论 -
线程练习||启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,
题目描述:启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,19,20….以此类推, 直到打印到75.代码实现:class MyThread extends Thread { private String name; private Stri...原创 2019-06-27 00:36:18 · 2281 阅读 · 0 评论 -
【Java】题目:判断101-200之间有多少个素数,并输出所有素数。
需求:判断101-200之间有多少个素数,并输出所有素数程序分析:判断素数的方法:用一个数分别去除2到 sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。实现代码:public class primenumber { public static void main(String[] args) { int count = 0; for (int i ...原创 2019-06-13 19:48:22 · 13688 阅读 · 1 评论 -
【Java】输入一个链表,按链表值从尾到头的顺序返回一个ArrayList
解题思路:1,先构造一个链表2,定义一个栈,将链表元素放入到栈中3,利用栈的先进后出,实现从尾到头返回4,取出栈的元素放入到ArrayList,然后遍历实现代码如下:import java.util.ArrayList;/***输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。* public class ListNode {* ...原创 2019-06-06 20:04:47 · 2686 阅读 · 3 评论 -
【Java】算法之水仙花数(for循环和while循环实现)
概述在数论中,水仙花数(Narcissistic number),也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),用来描述一个N位非负整数,其各位数字的N次方和等于该数本身。(百度百科)说明白点,水仙花数就是数字,其的各位数字的立方和等于这个三位数本身。举个...原创 2019-05-24 18:14:48 · 5732 阅读 · 0 评论 -
【Java】编写一个程序,计算表达式“((123456789*9)>(987654321*3))?true:false”的值
计算表达式“((123456789*9)>(987654321*3))?true:false”的值这里涉及三元运算符:三元运算符也称三目运算符,它的运算符是“ ?”,有三个操作数。操作流程如下:首先判断条件,如果条件满足,就会赋予一个变量一个指定的内容(冒号之前的),不满足会赋予变量另外的一个内容(冒号之后的)。操作语法:数据类型 变量 = 布尔表达式?条件满足设置内容:条...原创 2019-05-24 20:48:50 · 1613 阅读 · 1 评论 -
【Java】编写程序,使程序产生1到12的某个整数,然后输出相应的月份的天数。2月按28天算。
编写程序,使程序产生1到12的某个整数,然后输出相应的月份的天数。2月按28天算。实现代码如下:package workspace;import java.util.Random;import java.util.Scanner;public class month { public static void main(String[] args) { System.out...原创 2019-05-24 21:00:28 · 5289 阅读 · 1 评论 -
【Java】判断某一年是否为闰年
题目:判断某一年是否为闰年。判断依据:① 能被4整除,但不能被100整除;② 能被100整除,又能被400整除。分析:if(判断条件成立){表达式(为闰年)}else {表达式(非闰年)}为防止输错年份,增加try---catch语句捕获错误关于try---catch的用法,可以查阅小编的另一条博客:https://blog.youkuaiyun.com...原创 2019-05-24 21:25:32 · 1555 阅读 · 0 评论 -
【Java面试题】利用java输入年月,输出相应年月的日历(for循环,if语句,switch语句)
问题:输入年和月,自动打印对应年月的日历。补充知识:1970年是Unix系统诞生的时间,所以人们把1970年定为Unix的元年,1970年1月1号是星期四。(这是计算机的一个参考值)思路(仅供参考):首先应该计算出这个月1号是星期几。要想解决1号是星期几,就得先计算出年天数,即截至这一年1月1号的天数。 用for循环,从1970年开始,闰年+366,平年+365;计算出月天数...原创 2019-05-25 15:08:11 · 3146 阅读 · 0 评论 -
【Java面试题】空语句的详解和运用
空语句:编程语言中语句都要进行一定的操作,但是java中有一种语句什么也不执行,这就是空语句。空语句是有一个分号(;)组成的语句。空语句是什么也不执行的语句。在程序中空语句通常用作空循环体。举个例子:while((char)System.in.read()!='\n'){ ;//为了突出空语句,特地加了大括号 }该语句的功能是,只要从键盘输入的字符(System....原创 2019-05-25 23:32:32 · 3281 阅读 · 0 评论 -
【Java面试题】定义枚举类型Weekday,使用枚举类型配合switch语句,尝试如下功能:
定义枚举类型Weekday,使用枚举类型配合switch语句,尝试如下功能:wd = Mon是输出“Do Monday work”,wd = Tue时,输出“Do Monday work”,以此类推,当wd不为枚举值元素值时输出“I don`t know which is day”。实现代码如下:package workspace;enum Weekday{Mon,Tue,Wed...原创 2019-05-26 22:08:56 · 2102 阅读 · 0 评论 -
【Java面试题】用float型定义变量:float = 3.14;,是否正确?
题目:用float型定义变量:float = 3.14;,是否正确?解析:不正确,赋值运算符(=)左右两边的精度类型不匹配。在默认情况下,包括小数点的实数,如本题中的3.14,被存储为double类型(即双精度),而float类型定义的变量,如本题中的f,即是单精度的。如果想让上面的语句编译正确,应该对赋值运算符(=)右边的值做强制类型转换,即把常量3.14强制转换为单精度(即flo...原创 2019-05-23 18:27:11 · 30470 阅读 · 3 评论 -
【JAVA】输入一个链表,输出该链表中倒数第k个结点。
ListNode:在节点ListNode定义中,定义为节点为结构变量。 节点存储了两个变量:value 和 next。value 是这个节点的值,next 是指向下一节点的指针,当 next 为空指针时,这个节点是链表的最后一个节点。 注意注意val只代表当前指针的值,比如p->val表示p指针的指向的值;而p->next表示链表下一个节点,也是一个指针。 构造函数包含两个参...原创 2019-06-06 19:51:34 · 1065 阅读 · 0 评论 -
LeetCode||查找字符串中的最长回文字符串
回文字符串回文字符串就是正着读和反着读都一样的字符串,例如abcdcba算法--动态规划用一个boolean类型的二维数组T[i][j]来表示i到j之间的字符串是否回文其中 i>=j 动态规划的初值就是 当i=j时,T[i][j]=true;动态规划的推导公式为当i=j+1时,T[i][j]=(Array[i]==Array[j]),相邻两元素是否相等当i>...原创 2019-08-01 16:51:55 · 977 阅读 · 0 评论