{ "question_id": 771514, "question_title": "目标值与数组所有元素去比对,找出最接近的元素,输出下标", "question_content": "举例如下:一个数组{915,941,960,976,992,1015,1034,1050,1073,1089,1115,1131,1150,1166,1182,1208,1227};目标值假设是1000,最接近元素为992,下标为4", "difficulty": "中等", "answer_id": 834113, "answer_content": "如果不是有序的,那么比较绝对值,找到最小的。\n```\n#include \n\nint main()\n{\n\tint min = (1 << 31) - 1;\n\tint idx = 0;\n\tint arr[] = {915,941,960,976,992,1015,1034,1050,1073,1089,1115,1131,1150,1166,1182,1208,1227};\n\tint n = 1000;\n\tfor (int i = 0; i < sizeof(arr) / sizeof(int); i++)\n\t{\n\t\tint diff = arr[i] - n;\n\t\tif (diff < 0) diff = -diff;\n\t\tif (diff < min)\n\t\t{\n\t\t\tmin = diff;\n\t\t\tidx = i;\n\t\t}\n\t}\n\tprintf(\"最接近的是%d 下标是%d\", arr[idx], idx);\n \treturn 0;\n}\n```\n最接近的是992 下标是4\n", "tag_name": "c语言", "cpp": "#include \nint main()\n{\n\tint min = (1 << 31) - 1;\n\tint idx = 0;\n\tint arr[] = {915,941,960,976,992,1015,1034,1050,1073,1089,1115,1131,1150,1166,1182,1208,1227};\n\tint n = 1000;\n\tfor (int i = 0; i < sizeof(arr) / sizeof(int); i++)\n\t{\n\t\tint diff = arr[i] - n;\n\t\tif (diff < 0) diff = -diff;\n\t\tif (diff < min)\n\t\t{\n\t\t\tmin = diff;\n\t\t\tidx = i;\n\t\t}\n\t}\n\tprintf(\"最接近的是%d 下标是%d\", arr[idx], idx);\n \treturn 0;\n}", "topic_link": "https://bbs.csdn.net/topics/600470168", "status": 1, "keywords": "算法高阶,数论算法,元素的幂,算法问题选编", "license": "csdn.net", "notebook": { "cpp": "https://codechina.csdn.net/csdn/csdn-daily-code/-/jupyter/master/data/notebook/answer/ipynb/cpp/80.ipynb?type=file" }, "notebook_enable": 1 }