精华内容
下载资源
问答
  • 算法编程题

    千次阅读 2017-06-26 20:17:47
    有这样一道智力:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一...

    1.假设一个数组长度为n,数组中的值的范围为0~n-1 ,求数组中任意一个重复的数字。

    public class Suanfa {
    	public static void main(String[] args) {
    		int nums[] = {2,4,6,1,2,3,0};
    		int result = Search(nums);
    		System.out.println(" " + result);
    	}
    
    	private static int Search(int []array) {
    		int length = array.length;
    
    		if(array == null || length <= 0) {
    			return -1;
    		}
    
    		for(int i = 0; i < length; i++) {
    			while(array[i] != i) {
    				if(array[i] != array[array[i]]) {
    					int temp = array[array[i]];
    					array[array[i]] = array[i];
    					array[i] = temp;
    				} else {
    					return array[i];
    				}
    			}
    		}
    		return -1;
    	} 
    }

    2.数组长度为n+1,数组中的值的范围为1~n,求数组中的任意一个重复的值。


    public class Suanfa {
    	public static void main(String[] args) {
    		int nums[] = {2,4,6,1,2,3,0,5};
    		int result = Search(nums);
    		System.out.println(" " + result);
    	}
    
    	private static int Search(int []array) {
    		int length = array.length;
    
    		if(array == null || length <= 0) {
    			return -1;
    		}
    
    		int min = 1;
    		int max = length -1;
    		int result = -1;
    
    		while(min <= max) {
    			int mid = (max + min)/2;
    			int count = countNums(array, min, mid);
    			if(min == max) {
    				result = min;
    				break;
    			}
    			if(count > mid - min + 1) {
    				max = mid;
    			} else {
    				min = mid + 1;
    			}
    		}
    
    		return result;
    	}
    
    	private static int countNums(int []array, int min, int max) {
    		if(array == null || array.length <= 0) {
    			return -1;
    		}
    
    		int count = 0;
    		for (int i =0; i < array.length; i++) {
    			if(array[i] <= max && array[i] >= min) {
    				count++;
    			}
    		}
    		return count;
    	}  
    }

    3.一个二维整型数组,每行元素值递增,每列元素值也递增,判断给定的值是否在这个数组中。

    public class Suanfa {
    	public static void main(String[] args) {
    
            int array[][] = {{1,2,3,4,5}, {2,3,4,5,6}, {3,4,5,6,7}, {4,5,6,7,8}, {5,6,7,8,9}};
    		System.out.println("" + Search(array, 5));
    	}
    
    	private static boolean Search(int [][]array, int target) {
    		if(array == null || array.length == 0){
    			return false;
    		}
    
    		int rows = array.length;
    		int cols = array[0].length;
    		int row = 0;
    		int col = cols - 1;
    
    		while(row < rows && col >= 0) {
    			if (array[row][col] < target) {
    				row++;
    			} else if (array[row][col] > target) {
    				col--;
    			} else {
    				System.out.println("" + row + " " + col);
    				return true;
    			}
    		}
    
    		return false;
    	}	
    }


    4、阿里抢红包问题

     

    public static int myAns(int[] _timeList) {
            int nums[] = new int[_timeList.length];
    
            for(int i =0; i <= _timeList.length; i++) {
                int count = 0;
                for(int j = 0; j < i; j++) {
                    if (_timeList[j] == 0) {
                        count++;
                    }
                }
                for(int j = i; j < _timeList.length; j++) {
                    if (_timeList[j] == 1) {
                        count++;
                    }
                }
                nums[i] = count;
            }
    
            int max = nums[0];
            for (int i =1 ; i < nums.length; i++) {
                if (nums[i] > nums[i - 1]) max = nums[i];
            }
    
            return max;
        }

    5、华为笔试题:

    有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝? 


    输入描述:

    输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空汽水瓶数。n=0表示输入结束,你的程序不应当处理这一行。

    输出描述:

    对于每组测试数据,输出一行,表示最多可以喝的汽水瓶数。如果一瓶也喝不到,输出0。

    输入例子1:
    3
    10
    81
    0
    输出例子1:
    1
    5
    40
        //方法1:递归
    	public static int calcute_1(int n) {
    		int count = 0;
    		if(n <= 1) {
    			count += 0;
    		} else if (n == 2){
    			count += 1;	
    		} else {
    			count += n/3;
    			n = n / 3 + n % 3;
    			count += calcute(n);
    		}
    		return count;
    	}
    	//方法2:循环
    	public static int calcute_2(int n) {
            int count = 0;
            if(n <= 1) {
                count += 0;
            } else if (n == 2){
                count += 1;
            }
    
            while (n > 2) {
                count += n/3;
                n = n / 3 + n % 3;
                if(n <= 1) {
                    count += 0;
                } else if (n == 2){
                    count += 1;
                }
            }
            return count;
        }

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。 

      

      

    Input Param  

         n               输入随机数的个数      

     inputArray      n个随机整数组成的数组  

          

    Return Value 

         OutputArray    输出处理后的随机整数 

      


    注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。 

    输入描述:

    输入多行,先输入随机整数的个数,再输入相应个数的整数

    输出描述:

    返回多行,处理后的结果

    输入例子1:
    11
    10
    20
    40
    32
    67
    40
    20
    89
    300
    400
    15
    输出例子1:
    10
    15
    20
    32
    40
    67
    89
    300
    400
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Scanner;
    import java.util.Set;
    
    public class Solution{
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
            HashMap hashMap = new HashMap();
            int num = 0;
            while(sc.hasNext()) {
            	int n = sc.nextInt();
            	if(n == num) break;
                hashMap.put(n, null);
                num++;
            }
            
            int[] array = new int[100];
            int j = 0;
            Set set = hashMap.keySet();
            Iterator iterator = set.iterator();
            
            while (iterator.hasNext()) {
                array[j++] = (int) iterator.next();
            }
            quickSort(array, 0, j - 1);
            for(int i = 0; i <= j - 1; i++) {
            	System.out.println(array[i]);
            }
    	}
    
    
    
    	public static void quickSort(int[] array, int low, int high) {
            int i = low;
            int j = high;
            if (low >= high) {
                return;
            }
            int key = array[low];
    
            while (low < high) {
                while (key <= array[high] && low < high) {
                    high--;
                }
                array[low] = array[high];
                while (key >= array[low] && low < high) {
                    low++;
                }
                array[high] = array[low];
            }
            array[low] = key;
    
            quickSort(array, i, low - 1);
            quickSort(array, low + 1, j);
        }
    
    }




    展开全文
  • Java算法编程题,一共50道,答案完整,可以检测Java的掌握情况
  • C算法编程题系列

    2013-11-15 18:06:00
    C算法编程题(一)扑克牌发牌 C算法编程题(二)正螺旋 C算法编程题(三)画表格 C算法编程题(四)上三角 C算法编程题(五)“E”的变换 C算法编程题(六)串的处理 C算法编程题(七...
    展开全文
  • 算法编程题精典总结实现计算器 实现计算器 计算器实现总结

    实现计算器

    计算器实现总结

    双指针和滑动窗口

    双指针 包括 左右指针 和 快慢指针。左右指针一般解决数组和字符串问题,滑动窗口属于左右指针。快慢指针用于解决链表。

    链表类题目

    参考文章

    • 包括 链表反转,整个反转,前n个节点反转,中间 n 个节点反转,k个一组反转。(有递归和迭代)
    • 判断 回文链表
    回溯算法

    参考文章

    股票买卖

    参考文章

    展开全文
  • 2017JAVA算法编程题全集(中级)
  • 14种模式解决面试算法编程题(PART I) 14种模式解决面试算法编程题(PART II)
    展开全文
  •  上一篇《C算法编程题(六)串的处理》  有些朋友看过我写的这个算法编程题系列,都说你写的不是什么算法,也不是什么C++,大家也给我提出用一些C++特性去实现问题更方便些,在这里谢谢大家提的一些建议和意见,我...
  • 写在前面 万万没想到,暑假还没开始,有些公司的秋招提前批已经来了…很慌…数据结构和算法题可以说是秋招笔试面试必考的内容,如果你还不够熟练(just...好了,今天文章的主题就是分享14种解决面试算法编程题的思路...
  • 算法编程题 排序 参考我的博客 常考的有:冒泡排序、快速排序、归并排序、堆排序 写一个lower_bound()函数 参考我的博客 手写全排列,并分析算法的复杂度。 没有重复数字的:leetcode 46题,参考我的博客 有重复...
  • Android之算法编程题

    千次阅读 2016-10-11 12:14:41
    Android面试之编程题
  • 为了简单说明算法编程题的程序框架,以非常简单的例题说明算法编程题的程序编写思路。 算法编程题答题要求: 测试数据输入文件名xxx.in; 测试数据输出文件名xxx.out; 测试程序文件名:xxx.c(C)、xxx.cpp...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,747
精华内容 4,298
关键字:

算法编程题