数三退一问题是,有一圈孩子,手拉手围成一个圈,从第一个孩子开始数1,第二个孩子数2,第三个孩子数3,这时候数3的孩子退出,从下一个孩子开始数1,一直循环,直到最后剩下一个孩子,问这个孩子的位置?两种解题思路,一种是将这一组小孩看成一个数组(假设有500个数组),每个元素为boolean型,初始时所有的元素为true,然后开始循环数数,判断剩下元素是否大于1,首先判断元素是否为true,true则继续数,每次数到3时,记录剩下元素...
1package com.zuidaima.core.util;2 3import java.util.Random;4 5publicclass RandomUtil {6publicstaticfinal String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";7publicstaticfinal String LETTERCHAR = "abcdefghijkllmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";8publicstaticfinal String NUMBERCHAR = "0123456789";9 10/** 11 * 返回一个定长的随机字符串(只包含大小写字母、数字...
【024-Swap Nodes in Pairs(成对交换单链表的结点)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题 Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed. 题目大意 给定一...
一、判断对象是否可进行回收1.引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。但是主流的Java虚拟机里面没有选用引用计数算法来管理内存,最主要的原因是它很难解决对象之间相互循环引用的问题。代码示例如下:publicclass JVMTest {private JVMTest jvmTest = null;publicstaticvoid main(String[] args) {JVM...
采用二分法时,数据应是有序并且不重复的与小时候玩的猜数游戏是一样的,会让你猜一个他所想的1~100之间的数,当你猜了一个数后,他会告诉你三种选择中的一个,比他想的大,或小,或猜中了,为了能用最少的次数猜中,必须从50开始猜,如果说你猜的小,那你必须从51~100开始猜,所以下一次猜的是75(51~100的一半),但如果他说有点大,则推出那个数在1~49之间,所以下一次猜25,每猜一次都将可能的值化为两部分实现思想:假设数据是...
Java排序算法 1)分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(箱排序、基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序。 1)选择排序算法的时候 1.数据的规模 ; 2.数据的类型 ; 3.数据已有的顺序 一般来说,当数据规模较小时,应选择直接插入...
目录1 问题描述2 解决方案2.1 动态规划法 1 问题描述现需找零金额为n,则最少需要用多少面值为d1 < d2 < d3 < ... < dm的硬币?(PS:假设这m种面值d1 < d2 < d3 < ... < dm的硬币,其中d1 = 1,且每种硬币数量无限可得) 2 解决方案2.1 动态规划法本文编码思想参考自《算法设计与分析基础》第三版,具体讲解如下: 具体代码如下:package com.liuzhen.chapter8;publicclass ChangeMaking {publicvoid getChangeMakingN(int[] coi...
希尔排序交换法:分组+冒泡排序组合一、测试类SortTestimport java.util.Arrays;public class SortTest { private static final int L = 20; public static void main(String[] args) { int [] arr = new int[6]; for (int i = 0; i < arr.length; i++) { arr[i] = (int)((Math.random()+1)*L); } System.out.println(Arrays.toString(arr)); // new Sort().BubbleSort(arr); // new So...
【114-Flatten Binary Tree to Linked List(二叉树转单链表)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题 Given a binary tree, flatten it to a linked list in-place. For example, Given 1/ 2 5/ \ 3 4 6 The flattened tree should look like: 1 2 3 4 5 6题目大意 给定一棵二叉树,将它转成单链表,使用原地算法。 解题思...
概念垃圾收集是很多使用JAVA语言的IT从业者了解得比较少的地方。但是涉及性能时非常重要。大公司面试除了算法,这部分也是会经常考察的地方。《深入理解JAVA虚拟机》一书中讲到JVM的垃圾收集算法和垃圾收集器。 垃圾收集算法分为:1、标记清除算法通常用在回收老年代内存。最早的搜集算法就是标记清除(Mark-Sweep)算法了。其原理是分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。...
1package sorting;2 3import java.util.*;4//import java.util.Comparator;5//import java.util.PriorityQueue;6//import java.util.Queue; 7 8publicclass Sorting {9/************************************序言**********************************************/ 10/** 11 * 排序方法:冒泡排序,插入排序,希尔排序,堆排序(2),归并排序(2),快排(2)...12 * */ 13 14/** 15 * 最小值函数16 * */ 17privatest...
一、冒泡排序(Bubble Sort)public class BubbleSort {public static void main(String[] args) {int[] arr = {3, 4, 2, 9, 10, 15, 11, 0, 1};System.out.println(Arrays.toString(bubbleSort(arr)));}public static int[] bubbleSort(int[] arr){for (int i = 0; i < arr.length - 1; i++) {for(int j = 0; j < arr.length - 1 - i; j++){if(arr[j] > arr[j + 1]){int temp = arr[j + 1];arr[j + 1] = arr[j];arr[j] = temp;}}}...
概述在数论中,水仙花数(Narcissistic number),也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number) ,用来描述一个N位非负整数,其各位数字的N次方和等于该数本身。举例 例如153、370、371及407就是三位超完全数字不变数,其各个数之立方和等于该数: 153 = 13 + 53 + 33。370 = 33 + 73 + 03。371 = 33 + 73 + 13。407 = 43 + 03 + 73。Java算法...
数据结构可以归类两大类型:线性结构与非线性结构,本文的内容关于非线性结构:树的基本定义及相关算法。关于树的一些基本概念定义可参考:维基百科
树的ADT模型:
根据树的定义,每个节点的后代均构成一棵树树,称为子树。因此从数据类型来讲,树、子树、树节点是等同地位,可将其看作为一个节点,用通类:Tree表示。如下图所示:
图:Tree ADT模型示意图
可采用“父亲-儿子-兄弟”模型来表示树的ADT。如图所示,除数据项外,分...
原文:http://www.open-open.com/code/view/1428398234916 import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; publicclass MD5Utils { /** * md5加密方法 * @param password * @return*/publicstatic String md5Password(String password) { try { // 得到一个信息摘要器 MessageDigest digest = MessageDigest.getInstance("md5"); byte[] result = digest.digest(password.getBytes()...