Moderate 不用比较符返回较大的数 @CareerCup

基于淘宝商城用户购物行为数据分析系统 本文使用HIve+superset技术对阿里云天池提供的淘宝用户购物数据进行处理分析,得到有价值的信息并对平台提出有建设性意义的意见。 阅读详情

通过判断a-b的最高位来知道哪一个数比较大

但是要注意overflow的情况

if a and b have different signs:
	//  if a > 0, then b <  <d,  and  k = l.
	// if a < 0, then b > 0, and k = 0.
	// so either way, k = sign(a)
	let k = sign(a)
else
	let  k  = sign(a  -  b)  //  overflow  is  impossible

但因为不能用if else所以用乘法来代替: 
int k = use_sign_of_a * sa + use_sign_of_c * sc;


package Moderate;


/**
 * Write a method which finds the maximum of two numbers. You should not use if-else or any other comparison operator.

EXAMPLE

Input: 5, 10

Output: 10

译文:

写一个函数返回两个数中的较大者,你不能使用if-else及任何比较操作符。 
 *
 */
public class S17_4 {

	/* Flips a 1 to a 0 and a 0 to a 1 */
    public static int flip(int bit) {
            return 1 ^ bit;
    }
    
    /* Returns 1 if a is positive, and 0 if a is negative */
    public static int sign(int a) {
            return flip((a >> 31) & 0x1);
    }
    
    public static int getMaxNaive(int a, int b) {
            int k = sign(a - b);
            int q = flip(k);
            return a * k + b * q;
    }
    
    public static int getMax(int a, int b) {
            int c = a - b;
            
            int sa = sign(a); 		// if a >= 0, then 1 else 0
            int sb = sign(b); 		// if b >= 0, then 1 else 0
            int sc = sign(c);		// depends on whether or not a - b overflows
            
            /* We want to define a value k which is 1 if a > b and 0 if a < b. 
             * (if a = b, it doesn't matter what value k is) */
            
            int use_sign_of_a = sa ^ sb; 		// If a and b have different signs, then k = sign(a)
            int use_sign_of_c = flip(sa ^ sb); 	// If a and b have the same sign, then k = sign(a - b)
            
            /* We can't use a comparison operator, but we can multiply values by 1 or 0 */
            int k = use_sign_of_a * sa + use_sign_of_c * sc;
            int q = flip(k); // opposite of k
            
            return a * k + b * q;
    }
    
    public static void main(String[] args) {
            int a = 26;
            int b = -15;
            
            System.out.println("max_naive(" + a + ", " + b + ") = " + getMaxNaive(a, b));
            System.out.println("max(" + a + ", " + b + ") = " + getMax(a, b));                
            
            a = -15;
            b = 2147483647;
            
            System.out.println("max_naive(" + a + ", " + b + ") = " + getMaxNaive(a, b));
            System.out.println("max(" + a + ", " + b + ") = " + getMax(a, b));
    }
}


ASPICE标准快速掌握「总目录」 欢迎大家来到雪云飞星的《ASPICE标准快速掌握》,开始前博主先列出本专栏学习的大纲,同时这也可以作为大家学习ASPICE协议知识点的参考。本专栏可以帮助大家快速掌握如何在项目中使用ASPICE,ASPICE的学习通常仅需要半天时间左右,掌握方法后完全就可以结合快查表来指导具体项目的质量提升了。 阅读详情

相关推荐

《华为项目管理之道》第1章笔记

performance indicator,KPI)纳入个人绩效承诺书,贯彻结果导向的理念,以向员工。客户需求是华为发展的原动力,为客户服务是华为存在的唯一理由。目经理‘用兵’,依靠市场机制‘调兵’”,打破了人员在功能部门的板结,实现了听得。为管理者选拔的必要条件,项目经理成为人人向往的岗位。《华为项目管理之道》,是新出的华为官方的项目管理书,整个书不错。伴随着项目型组织的建立,华为逐步形成了完备的项目管理流程和制度,从而将业务运。为此,通过改革,重新明确了项目经理承担的经营责任,并开始以项。

jackyrongvip的专栏 2127

Moderate Swap不用临时变量 @CareerCup

经典Swap问题,注意用异或时,不同让两个参数指向同一个变量! package Moderate; /** * * Write a function to swap a number in place without temporary variables. * * 译文: * * 写一个函数交换两个数,不能使用临时变量。 */ public class Moder

1408

【R语言】富集分析可视化代码(整理版)

分别介绍了如何使用DAVID在线分析工具对基因进行GO/KEGG功能富集分析、使用R ggplot包对获得的基因GO/KEGG功能富集结果进行可视化、使用R clusterProfiler包和R AnnotationHub包对基因进行GO/KEGG功能富集分析、OrgDb包制作以及结果可视化等。故,我重新整理了一波,并补充了可对多个分组的富集结果进行可视化以及富集结果绘制圈图等的代码。关注“在打豆豆的小潘学长”公众号,发送“富集分析3”获得完整代码包和演示数据。一、单组富集结果可视化。

weixin_54004950的博客 1万+

Moderate 找最小排序区间 @CareerCup

例子:数组 1, 2, 4, 7, 10, 11, 7, 12, 6, 7, 16, 18, 19  只要对下标3到9之间的元素排序,就能使整个数组有序 思路是: // Left: 1, 2, 4, 7, 10, 11 // Middle: 7, 12 // Right: 6, 7, 16, 18, 19 1 找到左边递增序列的最右(最大)的那个元素 11 2 找到右边递增序列最左(最

1593

别再只盯着YOLOv8了!手把手带你用PaddleDetection的PP-YOLOE+搞定你的第一个检测项目

本文介绍了PP-YOLOE+在目标检测领域的优势与应用实践,对比YOLOv8展示其在精度、速度和部署便利性上的突破。通过详细的代码示例和实战教程,帮助开发者快速上手PaddleDetection工具链,实现产业级目标检测项目,提升开发效率。

weixin_42701915的博客 184

STM32驱动HC-SR04超声波模块:两种精准测距方案详解

本文详解STM32驱动HC-SR04超声波模块的两种精准测距方案:定时器中断计数法和外部中断边沿检测法。涵盖硬件连接、代码实现与优化技巧,帮助开发者根据精度和复杂度需求选择合适方案,提升超声波测距在嵌入式项目中的稳定性和准确性。

g5h6i的博客 682

Moderate 阶层的结尾0个数 @CareerCup

思路和《经典面试题:100的阶乘有几个结尾零》是一样的,但代码更简洁了,尤其是第二种方法! package Moderate; /** * Write an algorithm which computes the number of trailing zeros in n * factorial. * * 译文: * * 写一个算法计算n的阶乘末尾0的个数。 *

1691

iPhone免越狱Git服务器搭建教程-iSH

iPhone免越狱Git服务器搭建教程

jts666的博客 4427

Moderate 判断井字游戏的胜利 @CareerCup

基于要查找的次数来决定是否要预处理。预处理方式按照3进制来做。 另外,检查是否赢了要判断横行,纵列,正反对角线 package Moderate; /** * Design an algorithm to figure out if someone has won in a game of tic-tac-toe. 译文: 设计算法检查某人是否赢得了井字游戏。 *

2970

代号OneNET02 STM32+ESP8266 WIFI系列-第2节-STM32单片机通过ESP8266连接WIFI访问OneNET OTA服务器实现SOTA远程程序升级

第2节-STM32单片机通过ESP8266连接WIFI访问OneNET OTA服务器实现SOTA远程程序升级,这一节主要是实现通过OneNET OTA服务器将需要更新的程序远程下载到STM32单片机,这一节主要是引导程序和应用程序的讲解。

weixin_44862509的博客 1904

Veritas NetBackup8.1.1安装

1.在服务器上运行Browser.exe 2.选中安装,点击"NetBackup Server Software Installation" 3.提示一个”UAC模式”,我们确定忽略它 4.下一步 5.接受授权,下一步 6.自定义安装 7.输入Key,并点击”netBackup Master Server” 8.自定义路径,下一步 9.默认端口,下一步 10.创建内置账户 创建本地用户帐户: C:\>net user nbwebsvc <StrongPassword> /

万物皆可学 2万+

Moderate BST转双向链表 @CareerCup

书中提到了3种方法: 1 新建一个数据结构NodePair用于保存一个双向链表的头尾节点 2 不用NodePair,只用记录双向链表的头结点,尾节点可以遍历得到 3 形成一个循环链表,这样能更快地找到尾节点 package Moderate; /** * Consider a simple node-like data structure called BiNode

2304

Centos7系统添加中文支持(附中文语言包)

这里以centos7.6为例,在安装系统是没有选择中文,之后如果需要添加中文支持。在命令行执行后,会提示启动图形模式失败,转为启动文本模式。文本模式其实和图形模式差不多,操作需要用键盘而不是鼠标。在弹窗后,通过上下键选择Chinese(P.R of China) - 中文(简体):然后,按Tab键选择Yes,点击回车。rebootlocale可以看到系统语言已经变成了zh_CN.utf-8:之后,服务器上的中文名称就可以正常显示正常了。

悦分享 683

Moderate 查单词 @CareerCup

简单题,如果是只查询一次,则用时O(n) 如果要多次查询,则用一个Hashtable存储已查过的词 package Moderate; import java.util.Hashtable; import CtCILibrary.AssortedMethods; /** * Design a method to find the frequency of occurrences

1974

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Moderate 猜测序列hit或是pseudo-hit @CareerCup

思路不难,关键是如何写出结构清晰的代码,另外注意到的就是用到的frequencies数组来使得复杂度由暴力的O(n2)到O(n) package Moderate; import java.util.Random; /** * The Game of Master Mind is played as follows: The computer has four slot

1663

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Moderate 找到数组中和为定值的整数对 @CareerCup

1 如果用Hashtable,能取得时间复杂度O(n) 2 如果用前后指针来做,时间复杂度为O(nlogn) 因为要排序 package Moderate; import java.util.Arrays; /** * Design an algorithm to find all pairs of integers within an array which sum t

1863

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Moderate 整数打印读法 @CareerCup

比较繁琐,要处理的case很多 package Moderate; import CtCILibrary.AssortedMethods; /** * Given any integer, print an English phrase that describes the integer (e.g., "One Thousand, Two Hundre

1698

Moderate 最大连续序列之和 @CareerCup

最大连续序列之和问题,思路就是保持两个变量,一个记录到当前位置最大的和(maxSum),还有一个记录当前位置的和(curSum) 当curSum+a[i] 如果>=0时,curSum += a[i] package Moderate; /** * * You are given an array of integers (both positive and negative).

1416

Moderate rand5()产生rand7() @CareerCup

参考这一文 http://hawstein.com/posts/19.10.html 比书上写得好 package Moderate; /** * * Write a method to generate a random number between 1 and 7, given a method that generates a random number betwe

2367

Moderate 加入空格使得可辨别单词数量最多 @CareerCup

递归题目,注意结合了memo的方法和trie的应用 package Moderate; import java.util.Hashtable; import CtCILibrary.AssortedMethods; import CtCILibrary.Trie; /** * Oh, no! You have just completed a lengthy docume

2266

Hard 单词变型成另一个单词 @CareerCup

对起始单词的每一个字母都做替换,把替换后的单词加入到queue中,并同时维护一个Map来记录变化前单词和变化后单词的联系。用来回溯时能打印出路径。 package Hard; import java.util.HashSet; import java.util.LinkedList; import java.util.Map; import java.util.Queue; impor

4761

Hard 找到由其它单词组成的最长单词 @CareerCup

用DFS的那个模板就能做出来,值得注意的是一个词必须被除自己外的其他词组成才行,不能是自己组成自己。 package Hard; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import CtCILibrary.A

3649

Tree_Graph 判断T2是否为T1的子树 @CareerCup

原文: You have two very large binary trees: T1, with millions of nodes, and T2, with hundreds of nodes. Create an algorithm to decide if T2 is a subtree of T1 译文: 有两棵很大的二叉树:T1有上百万个结点,T2有上百个结点。写

3487

Stack_Queue 把栈排序 Sort a stack @CareerCup

原文: Write a program to sort a stack in ascending order. You should not make any assumptions about how the stack is implemented. The following are the only functions that should be used to write thi

3231

Stack_Queue 猫狗队列问题 Cat dog queue @CareerCup

An animal shelter holds only dogs and cats, and operates ona strictly “first in, first out” basis. People must adopt either the “oldest”(based on arrival time) of all animals at the shelter, or they

3092

Recursion 字符串的全排列 String Permutation @CareerCup

字符串全排列的题目,还是套用模板,同样要注意ret的size问题会变化。而且与上一题不同的是不光是要在ret后面添加进新的组合,而且还要移除前面用过的组合。类似一个队列。 另外Java的substring中区间闭合情况是左闭右开 [ ) 所以想把一个字符串拆成两个区间就可以用这一句: for(int j=0; j<=tmp.length(); j++){ // substring

2977
上一篇: Moderate 阶层的结尾0个数 @CareerCup
下一篇: Moderate 猜测序列hit或是pseudo-hit @CareerCup
chiiis
博客等级 码龄14年 422粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值