Java--剑指offer(3)
11.输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
a)使用Integer.toBinaryString(n);来计算得出二进制的字符串,然后使用for循环截取字符串是否为1
public class Solution { public int NumberOf1(int n) { String res = new String(); //这里定义一个变量用来计算二进制数中的1的个数 int i=0; res = Integer.toBinaryString(n); //判断二进制的字符串中的是不是为1 for(int j = 0; j<res.length(); j++){ String s = new String(); if(s.equals("1")){ i++; } } return i; } public static void main(String[] args) { Solution s = new Solution(); System.out.println(s.NumberOf1(5)); } }
12.给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
a)这里有一种很简单的方法,就是直接调用Math的Math.pow(base, exponent);方法。
public class Solution { public double Power(double base, int exponent) { return Math.pow(base, exponent); } public static void main(String[] args) { Solution s = new Solution(); System.out.println(s.Power(5,5)); } }
b)还有一种方法就是自己使用Java来实现跟Math.pow(base, exponent);方法一样的功能。
public class Solution { public double Power(double base, int exponent) { double sum = 1; if(exponent == 0){ sum = 1; }else if(exponent > 0){ for(int i = 0; i < exponent; i++){ sum = sum * base; } }else if(exponent < 0){ int flag = -exponent; for(int i = 0; i < flag; i++){ sum = sum * base; } sum = 1/sum; } return sum; } public static void main(String[] args) { Solution s = new Solution(); System.out.println(s.Power(5,-1)); } }
13.输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
a)这里首先new一个长度和输入的数组长度相同的数组,然后遍历数组进行判断。
public class Solution { public void reOrderArray(int[] array) { int len = array.length; int j=0; int[] arr1 = new int[len]; for (int i = 0; i < len; i++) { if(array[i] % 2 != 0){ arr1[j] = array[i]; j++; } } for(int i = 0;i < len; i++){ if(array[i] % 2 == 0){ arr1[j] = array[i]; j++; } } for(int i = 0; i < len; i++){ array[i] = arr1[i]; System.out.print(array[i]); } } public static void main(String[] args) { Solution s = new Solution(); s.reOrderArray(new int[]{1,4,2,3,5,6,8}); } }
14.输入一个链表,输出该链表中倒数第k个结点。
public class Solution { public ListNode FindKthToTail(ListNode head,int k) { ListNode pre=null,p=null; //两个指针都指向头结点 p=head; pre=head; //记录k值 int a=k; //记录节点的个数 int count=0; //p指针先跑,并且记录节点数,当p指针跑了k-1个节点后,pre //指针开始跑, //当p指针跑到最后时,pre所指指针就是倒数第k个节点 while(p!=null){ p=p.next; count++; if(k<1){ pre=pre.next; } k--; } //如果节点个数小于所求的倒数第k个节点,则返回空 if(count<a) return null; return pre; } }
15.输入一个链表,反转链表后,输出链表的所有元素。
public class Solution { public ListNode ReverseList(ListNode head) { if(head==null) return null; ListNode newHead = null; ListNode pNode = head; ListNode pPrev = null; while(pNode!=null){ ListNode pNext = pNode.next; if(pNext==null) newHead = pNode; pNode.next = pPrev; pPrev = pNode; pNode = pNext; } return newHead; } }
Java--剑指offer(3)的更多相关文章
- 剑指Offer:面试题15——链表中倒数第k个结点(java实现)
问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...
- 剑指offer编程题Java实现——面试题5从头到尾打印链表
题目描述* 剑指offer面试题5:从尾到头打印链表 输入一个链表的头结点,从尾到头打印出每个结点的值 解决方案一:首先遍历链表的节点后打印,典型的"后进先出",可以使用栈来实现这 ...
- 剑指offer面试题-Java版-持续更新
最近在用Java刷剑指offer(第二版)的面试题.书中原题的代码采用C++编写,有些题的初衷是为了考察C++的指针.模板等特性,这些题使用Java编写有些不合适.但多数题还是考察通用的算法.数据结构 ...
- 《剑指offer》全部题目-含Java实现
1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. publi ...
- 剑指Offer——Java实现栈和队列的互模拟操作
剑指Offer--Java实现栈和队列的互模拟操作 栈模拟队列 题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型. 思路:其实就是把队列正常入 ...
- 剑指Offer——知识点储备-故障检测、性能调优与Java类加载机制
剑指Offer--知识点储备-故障检测.性能调优与Java类加载机制 故障检测.性能调优 用什么工具可以查出内存泄露 (1)MerroyAnalyzer:一个功能丰富的java堆转储文件分析工具,可以 ...
- 剑指Offer——知识点储备-Java基础
剑指Offer--知识点储备-Java基础 网址来源: http://www.nowcoder.com/discuss/5949?type=0&order=0&pos=4&pa ...
- 剑指offer面试题5 从头到尾打印链表(java)
注:(1)这里体现了java数据结构与C语言的不同之处 (2)栈的操作直接利用stack进行 package com.xsf.SordForOffer; import java.util.Stack; ...
- 剑指offer面试题4 替换空格(java)
注:利用java中stringBuilder,append,length方法很方便的解决字符串问题 /* * 剑指offer 替换空格 * xsf * */ /*开始替换空格的函数,length为原数 ...
- 剑指offer面试题6 重建二叉树(java)
注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 package com.xsf.SordF ...
随机推荐
- MMORPG大型游戏设计与开发(概述)updated
1.定义 MMORPG,是英文Massive(或Massively)Multiplayer Online Role-PlayingGame的缩写,即大型多人在线角色扮演游戏. 2.技术与知识 在这系列 ...
- AngularJS XMLHttpRequest
$http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据. 读取 JSON 文件 下是存储在web服务器上的 JSON 文件: { "records": [ ...
- Windows系统小知识
前言 本文写作于Window10发布后的2015-08-01,新系统发布后我做了新系统的小白鼠,所以写此文以作记录. WIN10各版本下载地址:http://www.ithome.com/html/w ...
- java 22 - 12 多线程之解决线程安全问题的实现方式1
从上一章知道了多线程存在着线程安全问题,那么,如何解决线程安全问题呢? 导致出现问题的原因: A:是否是多线程环境 B:是否有共享数据 C:是否有多条语句操作共享数据 上一章的程序,上面那3条都具备, ...
- 转:软件架构入门 (from 阮一峰)
说明:其中讲到了 5 种的架构模型,很不错. from: http://www.ruanyifeng.com/blog/2016/09/software-architecture.html
- Eclipse和MyEclipse工程描述符.classpath和.project和.mymetadata详解aaaaaa(转)
Eclipse和MyEclipse工程描述符.classpath和.project和.mymetadata详解(转) (2012-03-28 15:06:54) 转载▼ 标签: .mymetadata ...
- JVM生产环境参数实例及分析[转]
java application项目(非web项目) 改进前: -Xms128m-Xmx128m-XX:NewSize=64m-XX:PermSize=64m-XX:+UseConcMarkSweep ...
- 夯实基础之php学习-1基础篇
1,单引号和双引号的区别 单引号表示字符串,双引号能解析字符串中的变量,所以,如果没有变量,尽量用单引号,加快解析速度 当字符串需要单引号或者双引号的时候,可以用转义字符代替 2,类型转换 通过(bo ...
- P3384 【模板】树链剖分
P3384 [模板]树链剖分 题目描述 如题,已知一棵包含N个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作: 操作1: 格式: 1 x y z 表示将树从x到y结点最短路径上所有节 ...
- VS XML注释
1.<c> <c>text</c> 其中: text 希望将其指示为代码的文本. 备注 <c> 标记为您提供了一种将说明中的文本标记为代码的方法.使用 ...