11. 二进制中1的个数
描述
输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。
分析
使用一个int flag=1,并且把这个1不断左移然后和参数的int n进行与运算比较
public class Solution {
public static int NumberOf1(int n) {
int count=0,flag=1;
while(flag!=0)
{
if((flag&n)!=0)
count++;
flag=flag<<1;
}
return count;
}
}
12. 数值的整数次方
描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题,也不用考虑小数点后面0的位数。
分析
注意考虑exponent为负数的情况
public class Solution {
public double Power(double base, int exponent) {
double k = 1;
if(exponent >= 0)
{
for (int i=0; i<exponent; i++)
{
k = k * base;
}
}
else
{
for (int i=0; i<-exponent; i++)
{
k = k * base;
}
k = 1.0/k;
}
return k;
}
}
13. 调整数组顺序使奇数位于偶数前面
描述
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
分析
先插入奇数,再根据奇数的位置在其后插入偶数
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] reOrderArray (int[] array) {
int[] array2 = new int[array.length];
int a = 0;
int b = 0;
for (int i=0; i<array.length; i++)
{
if (array[i] % 2 != 0)
{
array2[a] = array[i];
a++;
}
}
for (int i=0; i<array.length; i++)
{
if (array[i] % 2 == 0)
{
array2[a+b] = array[i];
b++;
}
}
return array2;// write code here
}
}
14. 链表中倒数最后k个结点
描述
输入一个链表,输出一个链表,该输出链表包含原链表中从倒数第k个结点至尾节点的全部节点。
如果该链表长度小于k,请返回一个长度为 0 的链表。
分析
使用两个指针,并且注意题目要求
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* public ListNode(int val) {
* this.val = val;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pHead ListNode类
* @param k int整型
* @return ListNode类
*/
public ListNode FindKthToTail (ListNode pHead, int k) {
ListNode a = pHead;
ListNode b = pHead;
int c = 0;
if (a == null)
return null;
for (int i=0; i<k; i++)
{
a = a.next;
c++;
if (a == null & k > c)
return null;
}
while (a != null)
{
a = a.next;
b = b.next;
}
return b;
// write code here
}
}
15. 反转链表
描述
输入一个链表,反转链表后,输出新链表的表头。
分析
使用头插法。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
ListNode pre=null;
ListNode cur=head;
while(cur!=null){
ListNode tmp=cur.next;
cur.next=pre;
pre=cur;
cur=tmp;
}
return pre;
}
}