zoukankan      html  css  js  c++  java
  • 算法基础:整数排序问题(连续整数仅仅保留首尾两个数字)

    描写叙述:
    实现输入一组大于等于0的整数。依据从小到大的顺序排序后输出,排序后有连续数时。仅仅输出连续数中最小和最大的两个数。



    输入:
    一组大于等于0的整数。不考虑非法输入,各个整数之间以逗号(“,”)分隔, 输入字符串的总长度小于等于100个字节。
    输出:
    排序后的值,各个整数之间以空格分隔。

    例子输入:
    1,4,3,110,2,90,7

    例子输出:
    1 4 7 90 110

    代码实现:

    package huawei
    
    import (
    	"fmt"
    	"sort"
    	"strconv"
    	"strings"
    )
    
    func Test3Base() {
    	res := "1,4,3,2,90,7,6,17,8,9"
    	sortNums(res)
    }
    
    func sortNums(resString string) {
    	numsStr := strings.Split(resString, ",")
    	numsInt := convertToIntSlice(numsStr)
    
    	//排序
    	sort.Ints(numsInt)
    	//连续数字仅仅保留首尾
    	result := removeCenterItems(numsInt)
    
    	fmt.Println(result)
    }
    
    //将[]string转为[]int
    func convertToIntSlice(numsStr []string) []int {
    	numsInt := make([]int, len(numsStr))
    	for i, v := range numsStr {
    		n, err := strconv.Atoi(v)
    		checkError(err, "string to integer")
    
    		numsInt[i] = n
    	}
    
    	return numsInt
    }
    
    //连续数字仅仅保留首尾
    func removeCenterItems(nums []int) []int {
    	//须要移除的索引位置
    	removeList := make([]int, 0, len(nums))
    	for i := 1; i < len(nums)-1; i++ {
    		if nums[i] == nums[i-1]+1 && nums[i] == nums[i+1]-1 {
    			removeList = append(removeList, i)
    		}
    	}
    
    	//移除
    	for i := len(nums) - 2; i > 0; i-- {
    		if checkContains(removeList, i) {
    			nums = append(nums[:i], nums[i+1:]...)
    		}
    	}
    
    	return nums
    }
    
    //推断slice中是否存在某个元素
    func checkContains(nums []int, value int) bool {
    	for _, v := range nums {
    		if v == value {
    			return true
    		}
    	}
    
    	return false
    }
    


  • 相关阅读:
    【leetcode】Binary Search Tree Iterator
    【leetcode】Palindrome Partitioning II
    【leetcode】Best Time to Buy and Sell Stock III
    【leetcode】Best Time to Buy and Sell Stock II
    【leetcode】Longest Consecutive Sequence
    【leetcode】Factorial Trailing Zeroes
    【leetcode】Simplify Path
    【leetcode】Generate Parentheses
    【leetcode】Combination Sum II
    【leetcode】Combination Sum
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5198287.html
Copyright © 2011-2022 走看看