两个整数相除

将两个整数相除,要求不使用乘法、除法和 mod 运算符。
如果溢出,返回 2147483647 。
样例

给定被除数 = 100 ,除数 = 9,返回 11。

package com.nuaa.sg;

import java.util.Scanner;

/**
 * 将两个整数相除,要求不使用乘法、除法和 mod 运算符。
如果溢出,返回 2147483647 。
样例
给定被除数 = 100 ,除数 = 9,返回 11。
 * 
 * @author Dell
 *
 */
public class Test414 {
  public static int divide(int dividend, int divisor)
  {
	   if(divisor==0)
		   return 2147483647;
	   if(dividend==0)
     	return 0;
	   if(dividend==Integer.MIN_VALUE&&divisor==Integer.MIN_VALUE)
		 return 1;
	   int flag=0;
	   if(dividend>0&&divisor<0||dividend<0&&divisor>0) 
	   {
		  flag=1;
	   }
	 long a=Math.abs((long)dividend);
	 long b=Math.abs((long)divisor);
	 long n=0;
	 
	 while(a>=b)
	 {
		 long n1=1;
		 long b1=b;
		 while(a>=b1)
		 {
			  a=a-b1;
			  n=n+n1;
			  b1=b1<<1;
			  n1=n1<<1; 
		 }
		 
	 }
	 if(flag==1)  
	 {
		 n=~n+1;
	 }
	 if(n>Integer.MAX_VALUE||n


你可能感兴趣的:(LeetCode,LeetCode,LeetCode)