给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋
的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入:[3,2,3]
输出:3
class Solution {
public int majorityElement(int[] nums) {
int ans = nums[0];
int count = 1;
for (int i = 1; i < nums.length; i++) {
if (nums[i] == ans) {
count++;
}
else{
count--;
}
if (count == 0) {
ans = nums[i];
count = 1;
}
}
return ans;
}
}
给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
class Solution {
public int trailingZeroes(int n) {
int count = 0;
while (n > 0) {
n /= 5;
count += n;
}
return count;
}
}
编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
提示:
-3
。示例 1:
输入:00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int ans = 0;
while (n != 0) {
ans += n & 1;
n >>>= 1;
}
return ans;
}
}
编写一个算法来判断一个数 n
是不是快乐数。
「快乐数」定义为:
如果 n
是快乐数就返回 true
;不是,则返回 false
。
示例 1:
输入:19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
class Solution {
public boolean isHappy(int n) {
int slow = n;
int fast = squareSum(n);
while (slow != fast) {
slow= squareSum(slow);
fast = squareSum(squareSum(fast));
}
return slow == 1;
}
private int squareSum(int n) {
int sum = 0;
while (n > 0) {
int temp = n % 10;
sum += temp * temp;
n /= 10;
}
return sum;
}
给你一个链表的头节点 head
和一个整数 val
,请你删除链表中所有满足 Node.val == val
的节点,并返回 新的头节点 。
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode yummy = new ListNode(0);
yummy.next = head;
ListNode node= yummy;
while (node.next != null) {
if (node.next.val == val)
node.next = node.next.next;
else
node = node.next;
}
return yummy.next;
}
}