自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

毛凡的博客

生活有时候挺没劲的,但活着却挺有意思

  • 博客(27)
  • 问答 (3)
  • 收藏
  • 关注

原创 寻找奇数出现II

给定一个整型数组arr,其中有两个数出现了奇数次,其他的数都出现了偶数次,找到这两个数。要求时间复杂度为O(N),额外空间复杂度为O(1)。给定一个整形数组arr及它的大小n,请返回一个数组,其中两个元素为两个出现了奇数次的元素,请将他们按从小到大排列。测试样例:[1,2,4,4,2,1,3,5],8返回:[3,5]思路:先用int e去用异或去得到e,这个

2016-06-30 20:55:04 410

原创 寻找奇数出现

有一个整型数组A,其中只有一个数出现了奇数次,其他的数都出现了偶数次,请打印这个数。要求时间复杂度为O(N),额外空间复杂度为O(1)。给定整形数组A及它的大小n,请返回题目所求数字。测试样例:[1,2,3,2,1],5返回:3思路:异或^的条件是相同为0,不同为1;设n=0;则n=n^a=a,如果出现同样的,则n=n^a=0;只有一个就只会值是那一个代

2016-06-30 20:45:28 329

原创 比较练习

对于两个32位整数a和b,请设计一个算法返回a和b中较大的。但是不能用任何比较判断。若两数相同,返回任意一个。给定两个整数a和b,请返回较大的数。测试样例:1,2返回:2思路:用异或的办法,先用>>31来得到符号位,a-b>0 则表示为1代码如下:public static void main(String[] args) {

2016-06-30 20:41:21 354

原创 交换练习

请编写一个算法,不用任何额外变量交换两个整数的值。给定一个数组num,其中包含两个值,请不用任何额外变量交换这两个值,并将交换后的数组返回。测试样例:[1,2]返回:[2,1]思路:用异或解决代码如下:public int[] getSwap(int[] num) { // write code here nu

2016-06-30 20:37:12 308

原创 碰撞的蚂蚁

题目描述在n个顶点的多边形上有n只蚂蚁,这些蚂蚁同时开始沿着多边形的边爬行,请求出这些蚂蚁相撞的概率。(这里的相撞是指存在任意两只蚂蚁会相撞)给定一个int n(3测试样例:3返回:0.75思路:每个蚂蚁爬行的方向都有两个,即围绕多边形顺时针爬和逆时针爬,因此n个蚂蚁爬行的方法有2^n种。只有当所有的蚂蚁按照同一个方向爬行才能保证所有的蚂蚁都不相

2016-06-29 20:43:33 893

原创 判断直线相交

题目描述给定直角坐标系上的两条直线,确定这两条直线会不会相交。线段以斜率和截距的形式给出,即double s1,double s2,doubley1,double y2,分别代表直线1和2的斜率(即s1,s2)和截距(即y1,y2),请返回一个bool,代表给定的两条直线是否相交。这里两直线重合也认为相交。测试样例:3.14,1,3.14,2返回:false

2016-06-29 20:42:27 975

原创 无环单链表判相交

现在有两个无环单链表,若两个链表的长度分别为m和n,请设计一个时间复杂度为O(n + m),额外空间复杂度为O(1)的算法,判断这两个链表是否相交。给定两个链表的头结点headA和headB,请返回一个bool值,代表这两个链表是否相交。保证两个链表长度小于等于500思路:先判断A和B的长度,A>B的话,就c =A - B,然后判断A 和B 的节点值是否想到直到最后一个,如果在比较

2016-06-29 15:53:52 401

原创 链表判环

如何判断一个单链表是否有环?有环的话返回进入环的第一个节点的值,无环的话返回-1。如果链表的长度为N,请做到时间复杂度O(N),额外空间复杂度O(1)。给定一个单链表的头结点head(注意另一个参数adjust为加密后的数据调整参数,方便数据设置,与本题求解无关),请返回所求值。思路:先用两个指针A和B,A跳一步,B跳两步,如果重逢了,就再将A重置到头结点,然后循环A和B同时跳一步

2016-06-29 15:49:51 304

原创 链表的回文结构

请编写一个函数,检查链表是否为回文。给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。测试样例:{1,2,3,2,1}返回:true{1,2,3,2,3}返回:false思路:用栈将链表中的值依次倒入,然后从栈顶到栈底依次放出,然后一个个匹配代码如下:

2016-06-24 15:53:03 388

原创 链表指定值清除

现在有一个单链表。链表中每个节点保存一个整数,再给定一个值val,把所有等于val的节点删掉。给定一个单链表的头结点head,同时给定一个值val,请返回清除后的链表的头结点,保证链表中有不等于该值的其它值。请保证其他元素的相对顺序。测试样例:{1,2,3,4,3,2,1},2{1,3,4,3,1}代码如下:package lianbiao;pu

2016-06-24 15:50:27 327

原创 两个链表的公共值

现有两个升序链表,且链表中均无重复元素。请设计一个高效的算法,打印两个链表的公共值部分。给定两个链表的头指针headA和headB,请返回一个vector,元素为两个链表的公共部分。请保证返回数组的升序。两个链表的元素个数均小于等于500。保证一定有公共值测试样例:{1,2,3,4,5,6,7},{2,4,6,8,10}返回:[2.4.6]代码如下:

2016-06-24 15:49:34 336

原创 链表的分化

对于一个链表,我们需要用一个特定阈值完成对它的分化,使得小于等于这个值的结点移到前面,大于该值的结点在后面,同时保证两类结点内部的位置关系不变。给定一个链表的头结点head,同时给定阈值val,请返回一个链表,使小于等于它的结点在前,大于等于它的在后,保证结点值不重复。测试样例:{1,4,2,5},3{1,2,4,5}代码如下:package lia

2016-06-24 15:48:41 262

原创 二叉树的序列化

首先我们介绍二叉树先序序列化的方式,假设序列化的结果字符串为str,初始时str等于空字符串。先序遍历二叉树,如果遇到空节点,就在str的末尾加上“#!”,“#”表示这个节点为空,节点值不存在,当然你也可以用其他的特殊字符,“!”表示一个值的结束。如果遇到不为空的节点,假设节点值为3,就在str的末尾加上“3!”。现在请你实现树的先序序列化。给定树的根结点root,请返回二叉树序列化后的字

2016-06-24 15:46:58 346

原创 找出缺失的整数

题目描述数组A包含了0到n的所有整数,但其中缺失了一个。对于这个问题,我们设定限制,使得一次操作无法取得数组number里某个整数的完整内容。唯一的可用操作是询问数组中第i个元素的二进制的第j位(最低位为第0位),该操作的时间复杂度为常数,请设计算法,在O(n)的时间内找到这个数。给定一个数组number,即所有剩下的数按从小到大排列的二进制各位的值,如A[0][1]表示剩下的

2016-06-24 15:45:34 874

原创 奇偶位交换

题目描述请编写程序交换一个数的二进制的奇数位和偶数位。(使用越少的指令越好)给定一个int x,请返回交换后的数int。测试样例:10返回:5解题思路:(1)先操作奇数位,把101010(即0xAA)作为掩码,提取奇数位,并右移1位到偶数位置(2)操作偶数位,把010101(即0x5555)作为掩码,提取偶数位,并左移一位到奇数位置

2016-06-23 16:04:16 698

原创 整数转化

题目描述编写一个函数,确定需要改变几个位,才能将整数A转变成整数B。给定两个整数int A,int B。请返回需要改变的数位个数。测试样例:10,5返回:4思路:A 需要变换 多少位 才能得到B,位变换无非就是0-1,1-0的过程所以,A和B之间 有多少的不同的0-1,1-0的变换就有需要多少位的变换,由于异或操作是

2016-06-23 15:32:02 568

原创 二叉树的非递归实现(先,中,后)

先序public void xianxu(TreeNode root) { if(root == null) return ; stack.push(root); while(!stack.isEmpty()){ TreeNode tmp =stack.pop(); System.out.print(tmp.val+" ");

2016-06-23 15:18:25 282

原创 二叉树的递归实现(先,中,后)

package erchashu;import java.util.ArrayList;import java.util.List;public class diguierchashu { public static List list1 =new ArrayList(); public static List list2 =new ArrayList(); pu

2016-06-23 15:15:57 290

原创 最接近的数

题目描述有一个正整数,请找出其二进制表示中1的个数相同、且大小最接近的那两个数。(一个略大,一个略小)给定正整数int x,请返回一个vector,代表所求的两个数(小的在前)。保证答案存在。测试样例:2返回:[1,4]思路:以给出的数为基础,先将给出的数的二进制中有几个1判断出来,然后再分别判别当前数左边右边的数是否二进制中的1也和当前数一样代码如下:

2016-06-22 15:34:47 2560

原创 二进制小数

题目描述有一个介于0和1之间的实数,类型为double,返回它的二进制表示。如果该数字无法精确地用32位以内的二进制表示,返回“Error”。给定一个double num,表示0到1的实数,请返回一个string,代表该数的二进制表示或者“Error”。测试样例:0.625返回:0.101思路例如:num = 0.625因为小

2016-06-22 14:45:33 428

原创 二进制插入

题目描述有两个32位整数n和m,请编写算法将m的二进制数位插入到n的二进制的第j到第i位,其中二进制的位数从低位数到高位且以0开始。给定两个数int n和int m,同时给定int j和int i,意义如题所述,请返回操作后的数,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1。测试样例:1024,19,2,6返回:1100思路 

2016-06-22 14:19:17 449

原创 快速N次方

如果更快的求一个整数k的n次方。如果两个整数相乘并得到结果的时间复杂度为O(1),得到整数k的N次方的过程请实现时间复杂度为O(logN)的方法。给定k和n,请返回k的n次方,为了防止溢出,请返回结果Mod 1000000007的值。测试样例:2,3返回:8思路:以10^13为例,首先我们将13以二进制表示如下:0000 110110

2016-06-22 11:17:42 1847

原创 最左原位

有一个有序数组arr,其中不含有重复元素,请找到满足arr[i]==i条件的最左的位置。如果所有位置上的数都不满足条件,返回-1。给定有序数组arr及它的大小n,请返回所求值。测试样例:[-1,0,2,3],4返回:2public int findPos(int[] arr, int n) { if (arr.length == 0 || n == 0)

2016-06-22 11:15:45 299

原创 局部最小值位置

定义局部最小的概念。arr长度为1时,arr[0]是局部最小。arr的长度为N(N>1)时,如果arr[0]<arr[1],那么arr[0]是局部最小;如果arr[N-1]<arr[N-2],那么arr[N-1]是局部最小;如果0<i<N-1,既有arr[i]<arr[i-1]又有arr[i]<arr[i+1],那么arr[i]是局部最小。 给定无序数组arr,已知arr中任意两个相邻的数都不

2016-06-21 15:28:54 1273

原创 元素最左出现

对于一个有序数组arr,再给定一个整数num,请在arr中找到num这个数出现的最左边的位置。给定一个数组arr及它的大小n,同时给定num。请返回所求位置。若该元素在数组中未出现,请返回-1。测试样例:[1,2,3,3,4],5,3返回:2public int findPos(int[] arr, int n, int num) { if(

2016-06-21 15:27:01 393

原创 循环有序数组最小值

对于一个有序循环数组arr,返回arr中的最小值。有序循环数组是指,有序数组左边任意长度的部分放到右边去,右边的部分拿到左边来。比如数组[1,2,3,3,4],是有序循环数组,[4,1,2,3,3]也是。给定数组arr及它的大小n,请返回最小值。测试样例:[4,1,2,3,3],5返回:1public int getMin(int[] arr,

2016-06-21 15:21:22 2259 1

转载 java中 static变量和方法到底是存在内存什么区域呢?

JVM内存总体一共分为了 4个部分(stack segment、heap segment、code segment、data segment) 当我们在程序中,申明一个局部变量的时候,此变量就存放在了 stack segment(栈)当中; 当new 一个对象的时候,此对象放在了heap segment(堆)当中; 而static 的变量或者字符串常量 则存在在 data segm

2016-06-21 14:44:15 13847 5

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除