
算法与数据结构
Lee Howard
江湖人称浩哥~现围绕Java技术栈展开,目标是全栈工程师。
展开
-
不使用加减乘除计算两个数的和
国际惯例,先上代码:public int Add(int num1,int num2){ int tmp = num1; num1 = tmp^num2; num2 = tmp&num2; return num2 == 0?num1:Add(num1,num2 << 1);}分析:1.两数字a、b相加,其实是二进制的相加2.两个数字异或运算,结果为c,3.两个数字与运算,若等于0,则表示没有进位,返回c即可否则,存在进位,结果为d4.将d原创 2021-03-24 21:32:46 · 321 阅读 · 0 评论 -
Merchant‘s Guide to the Galaxy
You decided to give up on earth after the latest financial collapse left 99.99% of the earth’s population with 0.01% of the wealth. Luckily, with the scant sum of money that is left in your account, you are able to afford to rent a spaceship, leave earth,原创 2021-01-02 20:46:35 · 377 阅读 · 0 评论 -
Java-01背包问题-动态规划-递归和非递归实现
国际惯例,先上代码,粗略分析:package com.bag;/** * Author: lihao * Date:2017/8/31 * Description: */public class Main { static int totalweight= 150; static int N= 5; static int values[] = {60, 2原创 2017-08-31 14:37:58 · 3199 阅读 · 0 评论 -
Java-线索二叉树的实现
概念性的东西,自行百度。按照国际管理,直接上代码来分析。1、Node节点类package com.tree.thread;/** * Author: lihao * Date:2017/8/30 * Description:ThreadBinaryTree Node */public class Node{ private int data; pri转载 2017-08-30 20:10:34 · 853 阅读 · 0 评论 -
Java-进制转换
描述:进制范围2-62,每个数字的可取值范围是0-9a-zA-Z输入原进制,转换后进制,待转换的整数值。输出转换后的值。思路:定义字符串存储0-9a-zA-Z即可import java.util.Scanner;public class Main { public static void main(String[] args) { Sca原创 2017-08-23 21:31:41 · 297 阅读 · 0 评论 -
Java--消除重复数字后的最大值
描述:一个长整型数字,消除重复的数字后,得到最大的一个数字。如12341 ,消除重复的1,可得到1234或2341,取最大值2341.42234,消除4 得到4223 或者 2234 ,再消除2,得到423或234,取最大值423以此类推。解决思路:从头到尾遍历,比如432324,第一次4,第二次3,前面没有和3重复的,所以结果尾43第三次2,前面没有和原创 2017-08-23 20:35:24 · 2929 阅读 · 2 评论 -
Java-堆排序
public class Main { public static void main(String[] args) { int a[] = {8, 2, 5, 6, 4, 8, 9, 7, 14, 2, 3, 6, 4}; a = heapSort(a); for (int i=0;i<a.length;i++){原创 2017-08-27 16:03:05 · 283 阅读 · 0 评论 -
Java-二叉树-插入、删除、遍历
二叉树的具体特性和细节知识点,自行百度,直接上代码。节点:节点内容、左子孩子、右子孩子、父亲class Node { private int data; private Node leftChild; private Node rightChild; private Node parent; public Node getParent() {原创 2017-08-25 16:48:20 · 982 阅读 · 0 评论 -
Java-栈方法实现迷宫问题
import java.util.Stack;public class Solution { public final int M = 6; public final int N = 8; //8*10 M+2,N+2 public int[][] maze = { {1, 1, 1, 1, 1, 1, 1, 1, 1, 1},原创 2017-08-15 18:43:49 · 1132 阅读 · 0 评论 -
尼姆游戏(吃花生米问题)
尼姆游戏。有总数为n的石头,每个人可以拿1~3个石头,两个人交替拿,拿到最后一个的人获胜。究竟是先手有利,还是后手有利? 1个石子,先手全部拿走;2个石子,先手全部拿走;3个石子,先手全部拿走;4个石子,后手面对的是先手的第1,2,3情况,后手必胜;5个石子,先手拿走1个让后手面对第4种情况,后手必败;6个石子,先手拿走2个让后手面对第4种情况,后手必败;原创 2016-09-06 17:30:39 · 723 阅读 · 0 评论 -
Java-动态规划-最多苹果数量的方法
平面上有N*M个格子,每个格子中放着一定数量的苹果。你从左上角的格子开始,每一步只能向下走或是向右走,每次走到一个格子上就把格子里的苹果收集起来,这样下去,你最多能收集到多少个苹果。思路:解这个问题与解其它的DP问题几乎没有什么两样。第一步找到问题的“状态”,第二步找到“状态转移方程”,然后基本上问题就解决了。首先,我们要找到这个问题中的“状态”是什么?我们原创 2017-08-22 11:04:08 · 896 阅读 · 0 评论 -
Java-Pi的几种实现
1、无穷级数计算 p = 1 - 1/3 + 1/5 -1/7+..... π=4p2、使用 Nilakantha 级数 π = 3 + 4/(2*3*4) - 4/(4*5*6) + 4/(6*7*8) - 4/(8*9*10) + 4/(10*11*12) - (4/(12*13*14).....3、假设有一个圆半径为1,所以四分之一圆面积就为PI,而包括此四分之一圆的正方形原创 2017-08-21 15:03:51 · 6180 阅读 · 0 评论 -
Java-河内塔问题
河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及这个故事,据说创世纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒移至第原创 2017-08-21 11:23:23 · 944 阅读 · 0 评论 -
Java-约瑟夫问题(Josephus Problem)
题目:据说着名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人 开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从,Josephus要他的原创 2017-08-21 10:42:06 · 635 阅读 · 0 评论 -
KTV
题目描述:有n个人去KTV唱歌,每个人都有自己想唱的一些歌曲。已知该KTV的每个房间都只有x个麦克风,同一首歌可以同时多个人一起唱,但是同时唱的人不能超过x个人,同一时刻只能唱一首歌。一共只有y首歌的时间,所有人想唱的歌都唱完或者y首歌唱完了他们就会离开。他们想知道在最优的安排策略下(让每个人尽量唱完自己想唱的歌曲),当他们离开时是否还有人有想唱但没唱的歌曲。输入:第一行一个整数T,表原创 2017-08-20 13:39:17 · 621 阅读 · 0 评论