算法与数据结构
买糖买板栗
java
展开
-
java算法7~求子数组的最大累加和问题
算法目的:求子数组的最大累加和问题算法要求:时间复杂度o(n),空间o(1),n为数组长度;算法原理:从左到右遍历数组arr,用遍历cur记录每一步的累加和,当cur 那么累加的这一部分肯定不能作为产生最大累加和的子数组的左边部分,此时令cur=0,表示重新从下一个数开始累加, 当cur>0时,每一次累加都可能是最原创 2016-11-28 17:09:03 · 604 阅读 · 0 评论 -
java算法6~在其他数都出现偶数次的数组中找到出现奇数次的数
算法目的:在其他数都出现偶数次的数组中找到出现奇数次的数算法要求:时间复杂度O(n),空间复杂度O(1)算法思路:对于一个整数n:0^n=n n^n=0,根据这两条规则,我们知道在这个数组中出现偶数次数的n^n=0。实现:/* * To change this license header, choose License Headers in Project P原创 2016-11-28 15:49:49 · 1524 阅读 · 0 评论 -
java算法5~整数的二进制表达中有多少个1
算法目的:统计整数的二进制表达中有多少个1算法实现原理:使用位运算,正负号处理问题。实现:/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * a原创 2016-11-28 14:28:53 · 749 阅读 · 0 评论 -
java算法4~交换两个整数,不能使用任何额外的变量
算法目的:交换两个整数;算法要求:不使用任何额外的变量;算法思路:使用位运算,异或操作。实现如下:/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Template原创 2016-11-28 13:20:17 · 612 阅读 · 0 评论 -
java算法0~大数相加
思路:(我们不用java的BigDecimal来操作) 1.反转两个字符串,便于从低位到高位相加和最高位的进位导致和的位数增加; 2.对齐两个字符串,即短字符串的高位用‘0’补齐,便于后面的相加; 3.把两个正整数相加,一位一位的加并加上进位。package test_technology;/** * * @author zhengchao原创 2016-10-21 12:11:36 · 1190 阅读 · 0 评论 -
java算法3~翻转字符串
要求: 1、"you are a dog" 变为 great are you 2、时间复杂度O(N)思路: 1、先将String转换成char[], 2、将char[]整体逆序,得到 god a era uoy 3、将char[]中每一个单词再逆原创 2016-11-25 10:43:55 · 430 阅读 · 0 评论 -
java算法2~求字符串中的数字字串的求和
要求:1、时间复杂度O(N)2、空间复杂度O(1)3、若有负号‘-’也要算,两个负号算正,小数点不算。难度不大,我就不考虑正负了,考虑正负就是判断连续遇到的负号个数,奇数为负,偶数为正package algorithm_database;public class String_SumInt { public static void main原创 2016-11-24 17:57:45 · 6399 阅读 · 0 评论 -
java算法1~两个字符串是否互为变形词
变形词: 给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,那么str1和str2互为变形词。我自己的愚蠢实现:package algorithm_database;public class IsBianxingci { public static void main(String[] args)原创 2016-11-24 17:15:27 · 1382 阅读 · 1 评论 -
java算法10~判断是否为平衡二叉树
概念:平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它 的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。(百度百科)算法目的:判断一个二叉树是否是平衡二叉树。算法要求:时间复杂度O(N),N为节点数目。算法思路:解法原创 2016-12-01 15:01:14 · 1393 阅读 · 0 评论 -
java算法9~二叉树前序、中序、后序遍历
1、定义:前序、中序、后序的概念前序遍历: 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历: 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 后序遍历: 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点2、算法实现稍后更原创 2016-11-30 18:57:04 · 2050 阅读 · 0 评论 -
java算法8~从5随机 到 7随机
算法目的:给定一个等概率随机产生1~5的随机数的函数randTo5(),要求产生1~7的随机数函数randTo7算法要求:不能使用除randTo5()之外的随机机制。算法实现如下:package algorithm_database;public class Random { public static int randTo5(){ return原创 2016-11-28 19:01:02 · 1108 阅读 · 0 评论