这个月练习了一些算法题,打算从简单题入手,逐步练习达到PAT甲级的程度,把Java和C++的熟练度捡回来。Java的一些基础知识还不是很熟,大一学习的时候只能算是囫囵吞枣,到了面试技术岗的时候才觉得当时真的是猴子捡香蕉式学习。希望在我大四毕业前可以把这些知识都融会贯通,可以在毕业后一年内找到满意的工作。

题源链接:https://wenku.baidu.com/view/4dafb43a00f69e3143323968011ca300a6c3f6a5.html

1.分解质因数

 //分解质因数int k = 2;public void myPrime(int n) {System.out.print("n = ");while(n > k) {if(n % k == 0) {    //找到因数System.out.printf(k+" * ");n /= k;    //类似递归的思路}else {k++;}}System.out.println(k);}

2.求完数

 //一个数如果恰好等于它的因子之和 这个数就称为"完数" 例如找出 1000 以内的所有完数。 public void perferctNum() {int sum = 0;int num = 0;for(int n = 1;n <= 1000;n++) {sum = 0;num = n;for(int i = 1;i <= n / 2;i++) {if(n % i == 0) {sum += i;}}if(num == sum) {System.out.println(num);}  }}

3.统计输入字符类型与计数

 //输入一行字符 分别统计出其中英文字母 空格 数字 和其它字符的个数。public void countString() {int engNum = 0;int kongNum = 0;int numNum = 0;int otherNum = 0;Scanner sc = new Scanner(System.in);String string = sc.nextLine();for(int i = 0;i < string.length();i++) {char c = string.charAt(i);if((c >= 'A') && (c <= 'Z')) {engNum++;}else if((c >= 'a') && (c <= 'z')){engNum++;}else if ((c >= '0') && (c <= '9')) {numNum++;}else if (c==' ') {kongNum++;}else {otherNum++;}}System.out.println("字母" + engNum + ";数字 = " + numNum + ";空格 = " + kongNum + ";其他 = " + otherNum);sc.close();}

4.求s=a+aa+aaa+aaaa+aa...a的值

 //求s=a+aa+aaa+aaaa+aa...a的值public long getNum(int a,int n) {int num = 0;for(int i = n-1 ;i >= 0;i--) {num += Math.pow(10, i) * a;}return num;}public void getSum(int a,int n) {int sum = 0;for(int i = 1;i <= n;i++) {sum += getNum(a, i);}System.out.println(sum);}

5. 第10次反弹多高?

 //一球从一百米高度自由落下 每次落地后反跳回原高度的一半//再落下 求它在第十次落地时 共经过多少米 第10次反弹多高?public void getHeight(int n) {double h = 100;    //初次高度double sum = 100;    //总高度的初始值double fan = 0;    //每次反弹高度for(int i = 1; i <= n; i++) {sum += fan * 2;fan = h / 2;h /= 2;}System.out.println("sum = "+sum+"fan = "+fan);}

6.求符合条件的数

 //1个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问boolean isPinfang(int n) {    //判断是否是完全平方数if(Math.sqrt(n) % 1 == 0) {return true;}return false;}public void getPin() {for(int i = 0;i < 10000000;i++) {if(isPinfang(i+100)&&isPinfang(i+268)) {System.out.println(i);}}}

7,输入某年某月某日 判断是这一年第几天

 //输入某年某月某日 判断是这一年第几天//初始化int[] mday1 = {31,28,31,30,31,30,31,31,30,31,30,31};int[] mday2 = {31,29,31,30,31,30,31,31,30,31,30,31};int[] sum = new int[12];//判断闰年public boolean isRun(int yy) {if(((yy % 4 == 0) && (yy % 100 != 0))||(yy % 400 == 0)) {return true;}return false;}//sum[i]所求月份之前的总和天数public void initMonth(int yy) {if(isRun(yy)) {for (int i = 0; i < 12; i++) {for(int j = i; j >= 0; j--) {sum[i] += mday2[j];}}}else {for (int i = 0; i < 12; i++) {for(int j = i; j >= 0; j--) {sum[i] += mday1[j];}}}}public void whichDay(int yy,int mm,int dd) {initMonth(yy);int ans = sum[mm-2] + dd;    //因为月份是1开头,sum是0开头,且要算包含(mm-1)月的天数System.out.printf("今天是%d年的第%d天\n",yy,ans);}

8.逆序输出数组(原地实现)

 public void reverse(int[] a) {for (int i = 0, j = a.length - 1; i < j; ++i, --j) {a[i] ^= a[j];a[j] ^= a[i];a[i] ^= a[j];}}

9.猴子吃桃

 //猴子吃桃//猴子第一天摘下若干个桃子 当即吃了一半 还不瘾 又多吃了一个//第二天早上又将剩下的桃子吃掉一半又多吃了一个 //以后每天早上都吃了前一天剩下的一半零一个 //到第十天早上想再吃时 见只剩下一个桃子了 求第一天共摘了多少。/*** b1=1 b2=2b1+2 b3=2b2+2....*/public int peach(int n) {if(n == 1) {return 1;}else {return (2*peach(n-1))+2;}}public void monkey() {System.out.println(peach(11));}

10.给出1,2,3,4四个数字,求出一共有几个互不相同,且无重复的三位数

public class Test27 {static int count = 0;int m = 4;int n = 3;int[] htable = new int[m+1];Stack<Integer> stack = new Stack<Integer>();//给出1,2,3,4四个数字,求出一共有几个互不相同,且无重复的三位数public void FNum(int now) {if(now == n) {count++;for (int is : stack) {System.out.print(is);}System.out.print(";");//System.out.println(stack);return;}for(int i = 1; i <= m; i++) {if(htable[i] == 0) {stack.push(i);htable[i]++;FNum(now+1);stack.pop();htable[i]--;}}}public static void main(String[] args) {Test27 test27 = new Test27();test27.FNum(0);System.out.println("\n共有"+count+"个互不相同且无重复数字的三位数");}}

2021年1月做算法题记录(Java实现)相关推荐

  1. 字节跳动2021年4月面试算法题库

    本文汇总了牛客2021.4.1~2021.4.30 面经考到的Leetcode题目 最终的高频题榜单数据可以在CodeTop题库(https://codetop.cc)查询,支持按部门.岗位分类筛选. ...

  2. 做算法题时的一些小技巧

    做算法题时的一些小技巧 技巧一: 在用C++做算法题时,我们会觉的cin,cout比scanf,printf使用起来更加的方便,不用指定输入输出格式. 但是cin,cout的运行时间比scanf,pr ...

  3. 2021年4月22日 阿里供应链Java开发实习面试(三面)(含总结)

    title: 2021年4月22日 阿里供应链Java开发实习面试(三面) tags: 面经 2021年4月22日 阿里供应链Java开发实习面试(三面) 上来就手撕一道代码--输入一个数,然后顺时针 ...

  4. 2021年4月12日 阿里供应链Java研发实习面试(一面)(含总结)

    title: 2021年4月12日 阿里供应链Java研发实习面试(一面) tags: 面经 2021年4月12日 阿里供应链Java研发实习面试(一面) 自我介绍介绍项目你用哪个版本的Java呢?( ...

  5. 2021年3月16日 北京快手Java开发实习面试(海外增长方向)

    title: 2021年3月16日 北京快手Java开发实习面试(海外增长方向) tags: 面经 2021年3月16日 北京快手Java开发实习面试(海外增长方向) 自我介绍你能讲一下你的项目吗?你 ...

  6. 2021年3月9日 北京快手Java开发–用户增长方向 实习面经(一面)

    title: 2021年3月9日 北京快手Java开发–用户增长方向 实习面经(一面) tags: 面经 2021年3月9日 北京快手Java开发–用户增长方向 实习面经(一面) 自我介绍你能介绍一下 ...

  7. 2021年4月16日 阿里供应链Java研发实习面试(二面)

    title: 2021年4月16日 阿里供应链Java研发实习面试(二面) tags: 面经 2021年4月16日 阿里供应链Java研发实习面试(二面)(70min) 自我介绍 介绍自己的研究生项目 ...

  8. 算法题库 java实现_LeetCode算法题-Most Common Word(Java实现)

    这是悦乐书的第321次更新,第342篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第190题(顺位题号是819).给定一个段落和一组禁止词,返回不在禁止词列表中的最常用词 ...

  9. java的简单算法题_[2]十道算法题【Java实现】

    前言 清明不小心就拖了两天没更了-- 这是十道算法题的第二篇了-上一篇回顾:十道简单算法题 最近在回顾以前使用C写过的数据结构和算法的东西,发现自己的算法和数据结构是真的薄弱,现在用Java改写一下, ...

最新文章

  1. 关于 android 加载 res 图片 out of memory 问题 解决 同样适用于 sd卡图片
  2. 老男孩为网友工作疑难问题解答一例
  3. opentack-openstack组件及功能(1)
  4. fastjson对json操作
  5. 使用OpenCV,Keras和Tensorflow构建Covid19掩模检测器
  6. 蓝桥杯 标题:纵横火柴旗子
  7. 鼠标移动到版块图标产生的渐变效果
  8. 位运算符 | ^ ~的厉害__10进制 To 2进制
  9. Hibernate读书笔记---继承映射
  10. 斗鱼回应与虎牙合并;Android 11 Beta 3 发布| 极客头条
  11. Django模板系统(非常详细)
  12. Java开发者值得关注的十个技术博客
  13. 在IIS7运行ASP程序
  14. 将ascii码转换成汉字
  15. win11怎么隐藏任务栏图标?
  16. 计算机语言中的计数器是什么,程序计数器的作用_程序计数器pc中存放的是什么...
  17. 浅谈sklearn中DBSCAN的欧式距离(Euclidean Distance)的计算
  18. iOS操作系统的层次架构和相关服务
  19. 百度飞桨七天训练营结营总结
  20. TCP标志位 FIN和RST的区别

热门文章

  1. 软件工程详细知识点(上)
  2. Lies, dxmn lies and Chin-ese science ~~where all the truth gone?
  3. docker系列之在win7上安装docker
  4. 安装多个jdk版本并切换
  5. 浪涌保护器的类型和应用
  6. 如何利用MATLAB进行数据插值?
  7. 怎么解密PDF文档?这三款解密方法亲测实用
  8. Typecho CommentToMail邮件插件模板美化
  9. Java实现在线打开编辑保存PPT
  10. 淘宝客流量劫持是什么意思?与淘宝劫持百度流量原理相同吗?