目录
2.用Integer.bitCount可以统计2进制中1的个数
给定一个整数 xx,输出该数二进制表示中 1 的个数。
例:9 的二进制表示为 1001,有 2 位是 1 ,所以函数返回 2。
输入描述
输入 x (内存空间为 32 位的整数)。
输出描述
第一行输出 x 二进制表示中 1 的个数。
输入输出样例
示例 1
输入
9
输出
2
x内存空间为 32 位的整数,int32位正好够用
- import java.util.Scanner;
-
- public class Main {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int n=sc.nextInt();
- String s = Integer.toString(n,2);
- int ans=0;
- for(int i=0;i
- if(s.charAt(i)=='1') ans++;
- }
- System.out.println(ans);
- }
- }
2.用Integer.bitCount可以统计2进制中1的个数
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int n=sc.nextInt();
- int ans=Integer.bitCount(n);
- System.out.println(ans);
- }
- }
3.用位运算
&两边都为1才为1
x&1 只有x的个位为1才会返回1
比如101&1=1
10&1=0
1&1=0
- import java.util.Scanner;
-
- public class Main {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int n=sc.nextInt();
- int ans=0;
- while(n>0) {
- if((n&1)==1) ans++;
- n>>=1;
- }
- System.out.println(ans);
- }
- }
题目描述
实现一个算法确定一个数字 N 是否为 2 的幂。
若该数字是 2 的幂则输出 YES,否则输出 NO。
输入描述
输入一个数字 N(1 <= N <=10^8)。
输出描述
输出一行,若 N 是 2 的幂则输出 YES,否则输出 NO。
输入输出样例
示例
输入
8
输出
YES
- import java.util.Scanner;
-
- public class Main {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int n=sc.nextInt();
- System.out.println(Integer.bitCount(n)==1?"YES":"NO");
- }
- }
最大化交易利润
题目描述
实现一个算法寻找最大化股票交易利润的策略。介绍如下:
- 股票价格每天都在变化,以数组的索引表示交易日,以数组的元素表示每天的股票价格。
- 可以通过买入和卖出获得利润。一天只能进行一次买入或卖出操作,一次买入加卖出操作称为一次交易次数。
- 你只能交易一次,求使得利润最大的交易策略。
输入描述
第一行为数字 N,表示共有 N 天。
第二行为 N 个数字 A_iAi,表示每天的股票价格。
其中,1 <=N, Ai <=10^4。
输出描述
输出一行,为交易一次的最大利润(有可能利润为负)。
输入输出样例
示例
输入
- 8
- 2 5 6 1 4 3 1 3
输出
4
思路分析:
如果你想在第x天把它卖出,那一定是在【1,x-1】中价格最低的一天把它买入
循环遍历,当你遍历第x天,你是不是一定已经遍历过【1,x-1】,同时维护最小值。
枚举在哪一天卖出,然后减去维护的最小值,这个最小值一定在它之前,因为我们是从前面过来的
- import java.util.Scanner;
-
- public class Main {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int n=sc.nextInt();
- int[] a=new int[n];
- for(int i=0;i
- a[i]=sc.nextInt();
- }
- //利润
- int ans=(int)-1e4;
- //在这之前价格最低的时候是多少
- int min=(int)1e4;
- //时间复杂度o(n)
- for(int i=0;i
- //枚举每一天把他卖出 也就是找差最大的
- if(i>0) ans=Math.max(ans, a[i]-min);
- min=Math.min(min, a[i]);
- }
- System.out.println(ans);
- }
- }
-
相关阅读:
测试的基础知识大全【测试概念、分类、模型、流程、测试用例书写、用例设计、Bug、基础功能测试实战】
Go-Python-Java-C-LeetCode高分解法-第七周合集
11-标准库fmt以及文件操作
[python 刷题] 19 Remove Nth Node From End of List
年末智能车最热擂台,华为、比亚迪、吉利系领衔 | 2023 广州车展
Java异步
依赖注入的进阶:深度解析ApplicationContextAware
浮点数 C语言 IEEE754
软件测试培训之十个无脚本测试方案
java计算机毕业设计ssm基于C程序课程的题库在线平台(源码+系统+mysql数据库+Lw文档)
-
原文地址:https://blog.csdn.net/qq_58631644/article/details/128166546