golang获取一串数字中与给定数最接近的数字

今天需要写一个算法,获取一串数字中与给定数最接近的数字,代码如下

package main

import (

    "fmt"
)

func main(){
    arr:=[]int{12,16,29,34,39,43,55,64,71,89,90,9}
    zuijin:=get_zuijin(40,arr)
    fmt.Println(zuijin)
}

func get_zuijin(this int,arr []int) int{
    min:=0
    if this==arr[0]{
        return arr[0]
    }else if this>arr[0]{
        min = this-arr[0]
    }else if this<arr[0]{
        min = arr[0]-this
    }

    for _,v:=range arr{
        if v==this{
            return v
        }else if v>this{
            if min>v-this{
                min = v-this
            }
        }else if v<this{
            if min>this-v{
                min = this-v
            }
        }
    }

    for _,v:=range arr{
        if this+min == v{
            return v
        }else if this-min == v{
            return v
        }
    }
    return min
}
时间: 2024-11-05 23:32:18

golang获取一串数字中与给定数最接近的数字的相关文章

获取0至100中指定的数

获取0至100中的0至29,42至100, 刚开始我想的太多,要小于29,大于42,这么多条件什么的.... 不多说了,我自己脑子没转过来 var i,j: integer; begin j := 0; for i := 0 to 99 - 13 do begin memo1.Lines.add(j.ToString()); if i = 29 then j := j + 13 else Inc(j); end; end;

C++ 中获取 可变形參函数中的參数

#include <iostream> #include <stdarg.h> using namespace std; int ArgFunc(const char * str, ...) { va_list ap; // 定义參数列表变量 va_start(ap, str); // 确定參数位置.表明从 str 開始获取參数 // 開始获取參数 var_arg(ap, 数据类型) 返回获取的值 cout<<va_arg(ap, int)<<endl; c

由最多N个给定数字集组成的数字 Numbers At Most N Given Digit Set

2019-10-14 22:21:29 问题描述: 问题求解: 暴力求解必然会超时,那么就需要考虑数学的方法来降低时间复杂度了. public int atMostNGivenDigitSet(String[] D, int N) { int n = D.length; int res = 0; char[] chs = new char[n]; for (int i = 0; i < n; i++) { chs[i] = D[i].charAt(0); } char[] nums = Stri

javascript获取当前url中的參数

javascript获取当前页面url中的參数能够使用location的search方法,获取到的是url中?后面的部分,比如http:localhost:8080/Manager/index.jsp? id=1 使用location的search方法能够获取到字符串?id=1;想要获取?后面的键值对能够使用substring方法对其进行截取,截取后获得id=1;须要获得id的值,能够使用split()方法对其进行拆分,拆分表达式为"=".以下看详细样例: window.onload

给定两个字符串,获取两个字符串中最大相同的子串

1 package weekpratisce; 2 3 ///给定两个字符串,获取两个字符串中最大相同的子串 4 public class Demo9 { 5 public static void main(String[] args) { 6 String xx = "aaaaaaaaaaddddddd", yy = "45ddddda"; 7 String str = getMaxsubstring(xx, yy); 8 System.out.println(s

在字符串中找出连续最长的数字串 在字符串中找出连续最长的数字串,并把这个串的长度返回

写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)功能:在字符串中找出连续最长的数字串,并把这个串的长度返回,并把这个最长数字串付给其中一个函数参数outputstr所指内存.例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9, #include<iostream> using namespace std; int ContinueMax(char *

[华为机试练习题]43.在字符串中找出连续最长的数字串

题目 描述: 请一个在字符串中找出连续最长的数字串,并把这个串的长度返回:如果存在长度相同的连续数字串,返回最后一个连续数字串: 注意:数字串只需要是数字组成的就可以,并不要求顺序,比如数字串"1234"的长度就小于数字串"1359055",如果没有数字,则返回空字符串("")而不是NULL! 样例输入 abcd12345ed125ss123058789 abcd12345ss54761 样例输出 输出123058789,函数返回值9 输出547

在一组数字中是否有n个数,使得这n个数的和等于一给定的定值m

[题目分析]在一组数字中是否有n个数,使得这n个数的和等于一给定的定值m. [思路分析]:分析数据的情况下: 1): 0 < n <= 100000 2): 0 < 序列长度 <= 100000 3): 0 <= m <=100000 数据小的话:用类似于dp的思路, 代码: #include <stdio.h> #include <string.h> #include <algorithm> #include <iostrea

JS中同步显示并分割输入的数字字符串

题目比较晦涩,来张图来说明要表达的效果: 第一张图的效果就是,用户输入一个数字,上面就显示一个大层,然后显示输入的数字,并把数字用空格按照每四位分割出来.好像在建行的网上银行上面就有这种效果.第二个图的效果就是用户在一个文本框中输入一串数字,然后再光标离开的时候,把数字按照每三位用逗号给分割开来,类似于老外的金钱输入效果. 效果一 同步显示分割分割输入 这种效果中,仿造的就是输入银行卡子类的,故只能够输入数字,需要禁用用户输入的其它字符下面是几种实现方式.先贴上HTML和CSS代码: 1 <ht