前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java 算法中常见的问题总结1(代码实现,不包含逻辑)

java 算法中常见的问题总结1(代码实现,不包含逻辑)

作者头像
lin_zone
发布2018-08-15 10:44:50
8480
发布2018-08-15 10:44:50
举报
文章被收录于专栏:LIN_ZONELIN_ZONE

java实现小数精确两位,然后四舍五入方法:

详情参考  http://www.cnblogs.com/nayitian/p/3214178.html

例:

  BigDecimal bg = new BigDecimal(d).setScale(2, RoundingMode.UP);

  return bg.doubleValue();

return (int)(money+0.5);

另一种四舍五入的方法:Math.round()

例:

int a =3.1315929035585537;

a=(double)Math.round(a*100)/100;

康托展开  主要用于求当前排列在所有排列中排第几(一般从零开始),也可用于搜索标记状态

详情参考    http://blog.csdn.net/zhongkeli/article/details/6966805

java中进制的转换

参考地址:   http://blog.csdn.net/swandragon/article/details/4926457

API上面的 Integer类中的方法

java中删除数组中的某个元素

参考地址:http://www.cnblogs.com/hanfeihanfei/p/6146077.html

import java.util.Arrays;

import java.util.Scanner;

public class ArraysDelete { public static void main(String[] args) { 

//删除数组中的某一个元素的方法:

//把最后一个元素替代指定的元素,然后数组缩容 

Scanner sc =new Scanner(System.in); 

int[] arr = new int[]{1,2,4,5,9,8,0};

System.out.println(Arrays.toString(arr));

System.out.println("请输入要删除第几个元素:");

int n = sc.nextInt(); sc.close();

//把最后一个元素替代指定的元素 

arr[n-1] = arr[arr.length-1];

//数组缩容 

arr = Arrays.copyOf(arr, arr.length-1);

System.out.println(Arrays.toString(arr)); 

} }

运行结果:

[1, 2, 4, 5, 9, 8, 0]

请输入要删除第几个元素: 

[1, 2, 0, 5, 9, 8]

日期的计算:

 1.java中的Calendar类的用法

例:计算当前时间是星期几

import java.util.Calendar;

import java.util.Scanner;

public class Main {

  public static void main(String[] args) {

    Calendar c =Calendar.getInstance();

    Scanner sc = new Scanner(System.in);

    c.set(sc.nextInt(),sc.nextInt()-1, sc.nextInt());

    System.out.println(c.get(Calendar.DAY_OF_WEEK)-1);

    }

}

 使用calendar的时候,需注意,外国的第一天是周日,周二是第二天

外国的月份是从0开始的,如:一月需要设置月份为0

2.时间戳转换

/**  * 日期格式时间戳 转换成字符串 * @param date 时间戳 * @param format 如:yyyy-MM-dd HH:mm:ss  * @return  */

public static String timeStamp2Date(String seconds,String format) { if(seconds == null || seconds.isEmpty() || seconds.equals("null")){ return ""; } if(format == null || format.isEmpty()){ format = "yyyy-MM-dd HH:mm:ss"; } SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(new Date(Long.valueOf(seconds+"000"))); }

/** * 日期格式字符串转换成时间戳 * @param date 字符串日期 * @param format 如:yyyy-MM-dd HH:mm:ss * @return */ public static String date2TimeStamp(String date_str,String format){ try { SimpleDateFormat sdf = new SimpleDateFormat(format); return String.valueOf(sdf.parse(date_str).getTime()/1000); } catch (Exception e) { e.printStackTrace(); } return ""; }

请参考  java 使用simpleDateFormat格式化日期 时间

java进制转换:

由十进制转化为其他进制:

 十进制转成二进制    Integer.toBinaryString(int i) 

  十进制转成八进制    Integer.toOctalString(int i) 

  十进制转成十六进制:    Integer.toHexString(int i)

由其他进制转换为二进制:

  二进制转十进制    Integer.valueOf("1010",2).toString()

  八进制转成十进制    Integer.valueOf("125",8).toString() 

  十六进制转成十进制    Integer.valueOf("ABCDEF",16).toString() 

参考地址:http://www.cnblogs.com/icerainsoft/archive/2012/08/06/2624790.html

java回文快速办法:借助reverse()方法

parseLong(m, n):将n进制数m转化为十进制

long a = Long.parseLong(m, n);

long b = Long.parseLong(new StringBuilder(m).reverse().toString(), n);

if (a == b)

System.out.println("回文");

else

System.out.println("不是回文");

 在判端两个字符串是否一样的时候,尽量使用equals方法判断,不要单单使用 == 这样有时候会出现问题

binarySearch :参考 http://blog.csdn.net/a1b2c3d4123456/article/details/51097161

此法为二分搜索法,故查询前需要用sort()方法将数组排序,如果数组没有排序,则结果是不确定的,另外

如果数组中含有多个指定值的元素,则无法保证找到的是哪一个。

⑴.binarySearch(object[ ], object key);

如果key在数组中,则返回搜索值的索引;否则返回-1或者”-“(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素索引。

卢卡斯定理

lucas(数论定理):

C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p    (p为质数)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档