输入一个整数,输出该数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; } }
给定一个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; } }
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
先插入奇数,再根据奇数的位置在其后插入偶数
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 } }
输入一个链表,输出一个链表,该输出链表包含原链表中从倒数第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 } }
输入一个链表,反转链表后,输出新链表的表头。
使用头插法。
/* 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; } }