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)的更多相关文章

  1. 剑指Offer:面试题15——链表中倒数第k个结点(java实现)

    问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...

  2. 剑指offer编程题Java实现——面试题5从头到尾打印链表

    题目描述* 剑指offer面试题5:从尾到头打印链表 输入一个链表的头结点,从尾到头打印出每个结点的值 解决方案一:首先遍历链表的节点后打印,典型的"后进先出",可以使用栈来实现这 ...

  3. 剑指offer面试题-Java版-持续更新

    最近在用Java刷剑指offer(第二版)的面试题.书中原题的代码采用C++编写,有些题的初衷是为了考察C++的指针.模板等特性,这些题使用Java编写有些不合适.但多数题还是考察通用的算法.数据结构 ...

  4. 《剑指offer》全部题目-含Java实现

    1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. publi ...

  5. 剑指Offer——Java实现栈和队列的互模拟操作

    剑指Offer--Java实现栈和队列的互模拟操作 栈模拟队列   题目:JAVA实现用两个栈来实现一个队列,完成队列的Push和Pop操作.队列中的元素为int类型.   思路:其实就是把队列正常入 ...

  6. 剑指Offer——知识点储备-故障检测、性能调优与Java类加载机制

    剑指Offer--知识点储备-故障检测.性能调优与Java类加载机制 故障检测.性能调优 用什么工具可以查出内存泄露 (1)MerroyAnalyzer:一个功能丰富的java堆转储文件分析工具,可以 ...

  7. 剑指Offer——知识点储备-Java基础

    剑指Offer--知识点储备-Java基础 网址来源: http://www.nowcoder.com/discuss/5949?type=0&order=0&pos=4&pa ...

  8. 剑指offer面试题5 从头到尾打印链表(java)

    注:(1)这里体现了java数据结构与C语言的不同之处 (2)栈的操作直接利用stack进行 package com.xsf.SordForOffer; import java.util.Stack; ...

  9. 剑指offer面试题4 替换空格(java)

    注:利用java中stringBuilder,append,length方法很方便的解决字符串问题 /* * 剑指offer 替换空格 * xsf * */ /*开始替换空格的函数,length为原数 ...

  10. 剑指offer面试题6 重建二叉树(java)

    注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 package com.xsf.SordF ...

随机推荐

  1. Windows 10 L2TP 809错误

    今天不知道为什么,一直工作正常的L2TP不能连接了.我用的是Surface Pro 3,Windows 10 专业版,操作系统一直保持自动更新,而且最近也没有安装什么软件.点击连接后,等一段时间就报8 ...

  2. using关键字的使用

    using语句的两个作用: 1)using可以导入命名空间 2)using可以释放对象占用的内存资源. 代码如下: using (SqlConnection con=new SqlConnection ...

  3. Hibernate一对一关联映射配置

    一.一对一关联 Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射.下面以员工账号和员工档案表为例,介绍这两种映射方式,并使用这两种映射方式分别完成以下持久化操作: (1 ...

  4. REST架构

    网络上的所有事物都被抽象为资源(resource): 每个资源对应一个唯一的资源标识符(resource identifier): 通过通用的连接器接口(generic connector inter ...

  5. 实现gridview空白处的点击事件

    今天做了一个girdview,要求长按item出现删除按钮,点击空白处取消,长按出现按钮可以,但是点击空白处有问题,如果点击到书籍的空白处 可以用适配器的布局点击事件处理,但是空白区域不是item,不 ...

  6. 为什么做前端要做好SEO

    我就挑干货说啦SEO可能听起来很高大上,其实翻译成中文就是"搜索引擎优化",它只是通过一定的方法在网站内外发布文章.交换连接等,最终达到某个关键词在搜索引擎上获得好的排名. 我有幸 ...

  7. Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录

    Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳 ...

  8. zlog学习笔记(mdc)

    mdc.h #ifndef __zlog_mdc_h #define __zlog_mdc_h #include "zc_defs.h" typedef struct zlog_m ...

  9. jQuery动态产生的铵钮怎样实现事件处理

    在ASP.NET MVC环境中,实现一个小功能,就是希望使用jQuery动态一个铵钮,并让用户能执行这个铵钮的click事件.为了更好的理解与对比,Insus.NET在视图中先写一个静态的,执行相似的 ...

  10. [转]Class 'Think\Log' not found

    转自:http://www.thinkphp.cn/topic/26815.html 解决偶尔出现 Class 'Think\Log' not found 的奇葩问题(并非每次必现,偶尔删除缓存可以解 ...