zoukankan      html  css  js  c++  java
  • 算法(二)

    在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数。

    分析,结果可能有多个符合条件的数

    第一眼的感觉是使用双层循环遍历,遍历每一个元素时分别判断两个条件。

    还可以使用辅助数组,与原数组长度相同,记录每一个位置的右面所有数中最小的值,然后在遍历一遍原始数组,比较每个元素是否大于左侧所有元素,并且小于辅助数组中同位置的元素

    public void findNum(int[] data)
    {
    	int len = data.Length;
    	int[] a = new int[len];
    	int min = data[len - 1];
    	for (int i = len - 1; i >= 0; i--) {
    		if (data[i] <= min) {
    			min = data[i];
    		}
    		a[i] = min;
    	}
    
    	int max = a[0];
    	for (int i = 0; i < len; i++) {
    		if (max <= data[i])
    			max = data[i];
    		if (data[i] >= max && data[i] <= a[i])
    			Console.WriteLine(data[i]);
    	}
    }
    

      

  • 相关阅读:
    谦卑
    自尊和自我效能
    二手时间读书笔记
    vim学习4
    vim学习3
    hdu 5122 K.Bro Sorting
    hdu 5113 Black And White
    poj 2479 Maximum sum
    poj 2392 Space Elevator
    poj 3666 Making the Grade
  • 原文地址:https://www.cnblogs.com/alex09/p/4885427.html
Copyright © 2011-2022 走看看