定义一个二维数组,输入一个给定值,输出与给定值最接近的数的下标和数本身,Python 5C

定义一个二维数组,输入一个给定值,输出与给定值最接近的数的下标和数本身,
用Python求解法,谢谢大神。

5个回答

不是很清楚为什么是二维数组,不是和一个数字比较么。

接近的数在二维数组里边,并返回其索引以及数值本身。

import numpy as np

ls = np.array([[1, 2, 3, 4],
               [8, 7, 9, 6]])
number = 2.9  # 输入的数
ls_cul = ls - number  # 求距离
ls_abs = abs(ls_cul)  # 求绝对值
argmin = ls_abs.argmin()  # 求最小值位置
print('最接近的数:%d,位置:[%d,%d]' % (ls.reshape(-1)[argmin], argmin / ls.shape[0], argmin % ls.shape[1]))

最接近的数:3,位置:[1,2]

darklinboxs
darklinboxs 回复justalun: 好像有点问题,我测试了一下,如果把数组的值8换成20,9换成10,然后输入一个20做判定,返回的是20.
接近 2 年之前 回复

思路是按照 abs(x - n) (也就是数组中每个值和你输入的值的差的绝对值)排序,差最小的排第一个,也就是你要的,为了得到下标,用map将下标和值组合下。
下面是程序

# encoding: utf-8

from compiler.ast import flatten

arr = flatten([[1,2,3],[3,2,1],[4,5,6],[8,8,8]])
arr = zip(arr, map(lambda x : (x / 3, x % 3), range(0, len(arr))))
#换成这个可以运行的时候输入 n = input()
n = 4
arr.sort(key=lambda x: abs(x[0] - n))
print(arr[0])

在线运行:
图片说明

caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复darklinboxs: 我自己写了一个 flatten
接近 2 年之前 回复
darklinboxs
darklinboxs 报错了555,ModuleNotFoundError: No module named 'compiler'
接近 2 年之前 回复

你可能少了包,不纠结了,自己写一个等价的flatten

 # encoding: utf-8
import collections

def flatten(x):
    result = []
    for el in x:
        for i in el:
            result.append(i)
    print(result)
    return result

arr = flatten([[1,2,3],[3,2,1],[4,5,6],[8,8,8]])
arr = zip(arr, map(lambda x : (x / 3, x % 3), range(0, len(arr))))
#换成这个可以运行的时候输入 n = input()
n = 4
arr.sort(key=lambda x: abs(x[0] - n))
print(arr[0])
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
[二分法] 在一个非降序列中,查找与给定值相同的元素下标

/* 任务一:北大版 在一个非降序列中,查找与给定值相同的元素下标 写一个 Binarysearch在包含size个元素的、从小到大排序的int数组a里查找元素p, 如果找到,返回元素下标,如果找不到,返回-1.  */ #include <iostream> using namespace std; int Binarysearch(int a[],int size,int p) ...

找出有序数组中最接近给定目标数的下标(递归实现)

输入:[1,2,3,3,4,5,6,7,8]    3 输出:2 输入:[1,3,5,7,9]    4 输出:1   实现方式:二分+递归 主要思想:设置两个游标,start,end,取start和end的中位数,及其左边一位,和右边一位,将三者与目标值的绝对差值进行比较。设中位数与目标的绝对差值为sm,左边一位的绝对差值为sl,右边一位的绝对差值为sr,对比较的结果我们花开两枝 ...

查找数组中最接近与某值的元素 python

查找数组中最接近与某值的元素。 是自己博文http://blog.csdn.net/qq575787460/article/details/39058649的资源。

OpenJudge_P7940 查找最接近的元素

总时间限制: 1000ms 内存限制: 65536kB 描述 在一个非降序列中,查找与给定值最接近的元素。输入 第一行包含一个整数n,为非降序列长度。1 <= n <= 100000。 第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。 第三行包含一个整数m,为要询问的给定值个数。1 <= m <= 10000。 接下来m行,每行一个整数,为要询

python取数组中最接近某值的元素

直接放代码,本人是新手自学点皮毛,高手别见怪,顺便问一下为什么,1.51-1.3不等于0.21而需要Decimal才能显示出正确值呢: li = [1.23, 1.25, 1.3, 1.59, 1.52, 1.50, 1.7, 1.33, 1.22, 1.22, 1.9, 1.2] defaultnumber = 1.51 select = Decimal(str(defa...

通过二分查找在数组中查找与当前被查找值最相近的值得下标

-

二分法之查找最接近目标数的数

/* Name: 01_查找最接近的元素 Copyright:  Author:  Date: 23-01-18 11:05 Description:  查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 在一个非降序列中,查找与给定值最接近的元素。 输入 第一行包含一个整数n,为非降序列长度。1 第二行包含n个整数,为非降序列各

找出升序数组中元素之和最接近于给定数值的两个数

题目:已知一个升序的数组array,再给定一个定值sum,现在要找出数组array中哪两个元素的和最接近于这个定值sum,并输出这两个元素。思路:因为已知的数组是升序序列,先将数组中大于sum值的元素全部干掉,记下小于sum最接近于sum的元素的下标n。设定两个哨兵head=0,rear=n,由于是升序序列,如果array[head]+array[rear]>sum,将rear向前移动一位,反之将h

给定一个乱序数组a,找到所有两个和为target的数组下标index1,index2

给定一个乱序数组a,找到所有两个和为target的数组下标index1,index2使用hash_map,时间复杂度为o(n),空间复杂度为o(n).Exp:a{ 2, 3, 1, 4, 5, 6, 7 },target=6;输出:0    3          2    4#include &amp;lt;iostream&amp;gt; #include &amp;lt;vector&amp;gt; #include &amp;lt...

LeetCode 270. 二叉搜索树中查找与目标数字最接近的节点

思路:如果当前节点值小于目标值,则结果只可能是当前节点值或者右子树中的值;如果当前节点值大于目标值,则结果只可能是当前节点值或者左子树中的值。struct TreeNode{ int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL){} };...

根据一个数值寻找数组中最接近这个数值的对象

问题描述:根据地图的层级(mapView.zoomLevel),在数组内寻找到最接近这个层级的数值 - (NSInteger)getMinValueShowLevel:(NSArray *)showLevels mapZoomLevel:(CGFloat)mapZoomLevel{ NSInteger suitValue = (int)mapZoo...

查找有序数组中相近的数或下标【JAVA实现】

刷LeetCode过程中遇到的一个知识点,特此记录~ 给定一个有序数组与目标值,数组中不一定有目标值,找出与目标值最相近的数的下标 private int findTarget(int[] nums, int lo, int hi, int target) { //如果只有一个元素可选,那就直接返回该元素 if(lo == hi) { ...

从一个数组中查找和目标数最接近的或者相等的数

/**  * 查找出最接近目标值的数,并返回。  * @param array  * @param targetNum  * @return  */ public static Integer binarysearchKey(Object[] array, int targetNum) { Arrays.sort(array); int targetindex = 0;

从数组中找出一对元素,其和是一个给定的目标数字。假设数组中只存在一个符合要求的数值对,返回这些数值的下标

【解题分析】对于数组中某个下标i,如何判断它是否属于符合条件的两个数字之一?最直观的就是再次扫描数字,判断target-array【i】是否存在于数组中。这样做时间复杂度O(n^2),效率不高,原因是没有保存之前的处理结果,每次都在做重复的工作。尽管效率不高,但通过最直观的方法,发现处理当前节点需要依赖于之前的部分结果,如何保存之前的处理结果?可以使用哈希表。 既然需要回答“target-arr...

T1240 查找最接近的元素(#Ⅱ- 7)

【题目描述】 在一个非降序列中,查找与给定值最接近的元素。 【输入】   第一行包含一个整数n,为非降序列长度。1 ≤ n ≤ 100000。 第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。 第三行包含一个整数m,为要询问的给定值个数。1 ≤ m ≤ 10000。 接下来m行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均在...

python numpy学习查找最近值

找出数组中与给定值最接近的数(通用方法)。(例:任一数组Z=array([[0,1,2,3],[4,5,6,7]]),给任一定值z=5.1)import numpy as npZ=np.array([[0,1,2,3],[4,5,6,7]])print(Z)x=5.1a=abs(Z-x)print(a)b=a.min()c=abs(x-b)print(c)输出结果:[[01 2 3] [4 5...

给定一整数在有序的整数数组中找出与给定值最接近的k个整数

思路:首先找出给定值在给定数组中的插入位置(不是真的将给定值插入给定数组),然后以此位置为基准,向左或向右依次找出最接近的k个整数。 难点:个人在处理过程中的难点在于向左或向右移动过程中的确切位置的确定。 代码: //找出value在数组中的应该插入位置 int kPosition(int A[], int nLength,int value) { int pos = 0;

查找最近数问题-Python

题目描述: 给定一个已排序的整数数组A,和一个待查找的目标值整数target。数组A下标从0开始,元素可能有重复。要求返回数组与target值相等或最相近的元素下标。任何异常情况,返回-1。(编程语言不限,时间复杂度要求为O(logn),同学去云脑科技的面试题) 例如: A=[1, 2, 3],  target=2,   输出 [1] A=[1, 4, 6],  target=3,   输...

C语言:编写从整型数组中查找给定数值的函数,输出该数值在数组中的下标

题目来源:大工慕课 链接 作者:Caleb Sung 题目要求 编写从整型数组中查找给定数值的函数,若找到则输出该数值在数组中的下标,若找不到则输出-1 主函数中定义一个包含5个整型元素的一维数组,该数组的元素从键盘输入;需要查找的数值也从键盘输入 子函数有三个参数:第一个参数是一维形参数组(不指定数组长度),第二个参数是数组的长度,第三个参数是要查找的数值;该函数的返回值为整型,即...

JavaEE日常工作经验总结系列(十六)-----Java获取数组中与参数最接近的数

Java小算法实现系列 概述 传入一个目标数组和目标元素,返回数组中与目标元素最接近的元素; 方法一 public static Object getNumberTwo(int[] intarray,int number){ Map&amp;lt;Integer, Integer&amp;gt; map = new HashMap&amp;lt;Integer, Integer&amp;gt;()...

1110:查找特定的值

#include&amp;lt;iostream&amp;gt;#include&amp;lt;cstdio&amp;gt;using namespace std;int main(){ int x,n,i,a[10001]={0},on=0; scanf(&quot;%d&quot;,&amp;amp;n); for ( i=1;i&amp;lt;=n;i++) scanf(&quot;%d&quot;,&amp;amp;a[i]); scanf(&quot;%d&quot;,&amp;amp;x);

python实现给定一个列表和数字,在列表找到和为该数字的元素返回下标

问题很简单直接看实现: #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:给定一个列表和数字,在列表找到和为该数字的元素返回下标 ''' def find_two_nums(num_list,one_num): ''' 求特定和 ''' for i in range(len(num_

NOI之查找最接近的元素(二分)

描述 在一个非降序列中,查找与给定值最接近的元素。 输入 第一行包含一个整数n,为非降序列长度。1 &amp;lt;= n &amp;lt;= 100000。 第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。 第三行包含一个整数m,为要询问的给定值个数。1 &amp;lt;= m &amp;lt;= 10000。 接下来m行,每行一个整数,为要询问最接近元素的给定值。所有给定值的...

NOI-1.11查找最接近的元素

题目链接:http://noi.openjudge.cn/ch0111/01/ 描述 在一个非降序列中,查找与给定值最接近的元素。 输入 第一行包含一个整数n,为非降序列长度。1 &amp;lt;= n &amp;lt;= 100000。 第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。 第三行包含一个整数m,为要询问的给定值个数。1 &amp;lt;= m &amp;lt;=...

【Leetcode】Python实现最接近的三数之和

给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). 本题和三数之和有点类似,分析和解释说...

刷题三:给定一个排序数组和目标值,求下标

给定一个排序数组nums(无重复元素)与目标值target,如果target在nums里出现,则返回target所在下标,如果target在nums里未出现,则返回target应该插入位置的数组下标,使得将target插入数组nums后,数组仍有序。// // main.cpp // binary_serarh_insert_index // // Created by tong on 20...

百田游戏2014笔试题——找到有序序列中某个值第一次出现的位置,并打印

题目:找到有序序列中某个值第一次出现的位置,并打印(需要考虑算法复杂度,序列可能很大) 分析: 1、该序列是有序序列,由此想到用二分查找法解决问题。 2、陷阱,如果你想到这点后,就觉得题目很简单,直接把二分查找法套上去,那就错了,注意题目要求是第一次出现的位置。 二分查找法并不能保证这一点,我们可以对二分查找法做一些修改,代码如下: int myBinarySearch(int n

图解:输入任意一个数值,打印一个螺旋矩阵(二维数组)

更多算法题请看本人博客分类--算法  public class Demo11 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true){ int n = sc.nextInt(); if(n == -1){ break;...

判断一个数最接近数组中的某个数

window.onload=function(){ var arr=[1,52,23,30,26,38,59,44,15,10]; var this_arr=20; arr.sort(function(a,b){ return Math.abs(a-this_arr)-Math.abs(b-this_arr); }) console.log(ar...

两个数的和(给定一个整数数组,当数组内两个数的和等于一个特定的值时返回两个数的下标)

例如,给定数组 num=[2,7,11,15],target=9,因为num[0]+num[1]=2+7=9,所以返回[0,1].方法一蛮力法/暴力法:蛮子法比较简单,遍历数组的每个元素x并且发现是否存在另一个元素的值=target-x.public int[] twoSum(int[] nums, int target) { for (int i = 0; i &amp;lt; nums.len...

给一个整数数组,找到两个数使得他们的和等于一个给定的数 target(容易)

每个数跟后面的所有数进行相加比对,遇到相加等于target的添加到vector中直接返回即可/* 给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头 */ class Solution { public: /* * @param numb

算法入门 二分法 找出指定元素的最大下标

我的课本是图解算法附上我的对第一章内容的总结这一次我要跟大家分享的是:再一个已经排好序的数组中找出指定元素的最大下标。要求利用二分法。分成两步:①首先利用二分法找到输入的元素                ②然后再和后一位元素做对比,如果相同则下标往后移把握要点 low、high、mid都是下标,所以返回的是mid,其次就是要小心数组溢出的问题list = [1, 2, 3, 3, 3, 3, 3...

Openjudge 7940:查找最接近的元素

题目 描述 在一个非降序列中,查找与给定值最接近的元素。 输入 第一行包含一个整数n,为非降序列长度。1 第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。 第三行包含一个整数m,为要询问的给定值个数。1 接下来m行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均在0-1,000,000,000之间。 输出 m行,每

【二分查找】01:查找最接近的元素

01:查找最接近的元素总时间限制: 1000ms内存限制: 65536kB描述在一个非降序列中,查找与给定值最接近的元素。输入第一行包含一个整数n,为非降序列长度。1 &amp;lt;= n &amp;lt;= 100000。第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。第三行包含一个整数m,为要询问的给定值个数。1 &amp;lt;= m &amp;lt;= 10000。接下来m行...

有序二维数组中搜索特定的数

关于二维有序数组中搜索,其题目如下:给定一个矩阵,都是整数,每一行从左到右升序,每一列从上到下有序,例如下面的矩阵[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ]请用最快的时间找出特定的数,例如,输入3,存在这个数,输入15,不存在这个数。实现如下的函数bool FindArray(int *pArray,int nWid

leetcode-java.T016_threeSumClosest---给定包含n个整数数组S,找到S中的三个整数,从而使之和最接近给定的数,返回三个整数的总和.

&amp;lt;span style=&quot;color:#ff4635&quot;&amp;gt;敬请关注博客,后期不断更新优质博文,谢谢&amp;lt;/span&amp;gt; package leetcode.T016_threeSumClosest; import java.util.Arrays; import java.util.HashMap; import java.util.Map; /** * @Title...

查找一个数组中第二大的数的下标并输出

查找一个数组中第二大的数的下标并输出

数组里找到和最接近于0的两个值。

int findMinAbsSum(int* arr, int len) { int min = INT_MAX; for (int i = 1; i < len; ++i) { if (abs(arr[i - 1] + arr[i]) < min) { min = abs(arr[i - 1] + arr[i]); nums[0] = arr[i - 1]; nums[

数组中两个数之和等于某个数字,返回这两个数的下标

leetcode刷题,大神之路开启。

【lintcode】两数之和、三数之和、最接近的三数之和、四数之和小结

两数之和给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。 你可以假设只有一组答案。样例 给出 numbers = [2, 7, 11, 15], target = 9, 返回 [1, 2].思路: 我们想到的最简单的方法是使用两个for循环

python在列表中找出三个数相加等于目标值返回这两个数在列表中的下标(ThreeSum)

代码实现:  def threeSum(alist, targetnum): for i, j in enumerate(alist): for m, n in enumerate(alist[i+1:]): realM = i+m+1 k = i+m+2 if alist[k:].count(ta...

C语言:生成一个4*4数组,并找出与一个指定数字最相近的元素的值以及所在位置

题目来源:大工慕课 链接 作者:Caleb Sung 题目要求 使用两重循环为一个4X4的二维数组赋值,形如{{11,12,13,14},{21,22,23,24},{31,32,33,34},{41,42,43,44}},然后从键盘输入一个整数,输出与该整数最接近的元素,及其所在的行和列。 提示 math.h这个头文件有abs()方法可用于求绝对值。 要记得用变量储存过程...

求数组第二(n)大值及下标

问:给定一个整型数组,数组成员10个,求该数组中第二大的数和下标 public static void main(String[] args) {   // TODO Auto-generated method stub   Scanner input = new Scanner(System.in);   System.out.println("输入10个整型数组元素的值: "); 

用二分查找法在一维有序数组中查找某个值并输出其下标值

关键字与左右标的大小比较#include<stdio.h> int main() { int arr[] = { 0, 1, 2, 3, 4, 6, 7, 9 }; int left = 0; int right = sizeof(arr) / sizeof(arr[0])-1; int mid = 0; int key = 4; while (le

js数组中查找与目标函数最相近的数值

var arr = [500, 400, 320, 200, 1, 10, 8, 100, 130, 120, 135, 140, 180, 190, 170, -1, -2, -4]; // 原有数组 var targetNum = 125; // 目标数值 /** * @method * @author gedesiwen * @param {...

Python 数据结构与算法——从某个列表中找出两个彼此最接近但不相等的数

先排序,再。。。(毕竟归并排序的时间复杂度仅为 O(nlogn)O(n\log n))排序的幽灵。排序和查找真是一对好基友。 来看基础版本:from random import randrange seq = [randrange(10**10) for _ in range(100)] dd = float('inf') for x in seq: for y in seq:

T1110 查找特定的值(#Ⅰ- 5 - 1)

【题目描述】在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。【输入】第一行包含一个正整数n,表示序列中元素个数。1 ≤n≤ 10000。    第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过10000。    第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。【输出】若序列中存在x,输出x第一次出现的下标;否则...

用Java编写 给定一个数组,要求统计出该数组中的最大值、最小值、平均及总数

public class Test { public static void main(String[] args) { int arr[] = new int[]{4,6,22,3,16,78,9,26}; int max = arr[0];//最大值 int min = arr[0];//最小值 int sum = a...

Java 查找特定的值

在一个序列(下标从1开始)中查找一个给定的值,输出第一次出现的位置。 输入 第一行包含一个正整数n,表示序列中元素个数。1 &amp;lt;= n &amp;lt;= 10000。 第二行包含n个整数,依次给出序列的每个元素,相邻两个整数之间用单个空格隔开。元素的绝对值不超过10000。 第三行包含一个整数x,为需要查找的特定值。x的绝对值不超过10000。 输出 若序列中存在x,输出x第一次出现的下...

在数组中求出两个数,使他们的和等于给定的一个数

题目 给定一个整型数组和一个整数,要找出数组中的两个数字,使得这两个数字的和等于给定的和。 例如,输入数组numbers={1,2,3,4,5,6,7},给定和为9,则要找出2和7,3和6,4和5的位置。 首先想到的是用两个for循环就能找出来。代码如下: /** * 方法1,时间复杂度为O(n^2) */ public int[] twoSumSolutio

立即提问
相关内容推荐