有一种非常诡异的算法,就是采用类似于单链表是否存在环的问题。“判断单链表是否存在环”是一个非常经典的问题,同时单链表可以采用数组实现,此时每个元素值作为next指针指向下一个元素。本题可以转换化为“已知一个单链表中存在环,找出环的入口点”这种想法。具体思路如下:将array[i]看作第i个元素的索引,即array[i]——>array[array[i]]——>array[array[array[i]]]——>array[array[array[array[i]]]]——>....最终形成一个单链表,由于数组a中存在重复元素,则一定存在一个环,且环的入口即为重复元素。所以先要找到环中的某个点,再找到环的入口点。

该题的关键在于,数组array的大小是n,而元素的范围是[1,n-1],所以array[0]不会指向自己,进而不会陷入错误的自循环。如果元素的范围中包含0,则该题不可直接采用该方法。程序示例代码如下:

#include "stdafx.h"
#include <stdio.h> int FindInteger(int array[], int n)
{
int x, y;
x = y = 0;
do
{
x = array[array[x]];
y = array[y];
} while (x != y);
x = 0;
do
{
x = array[x];
y = array[y];
} while (x != y);
return x;
}
int main()
{
int array[] = { 1, 3, 2, 4, 5, 4 };
int length = sizeof(array) / sizeof(array[0]);
printf("%d\n", FindInteger(array, length));
getchar();
return 0;
}

  效果如图:

最新文章

  1. MySQL Performance-Schema(三) 实践篇
  2. 利用联合双边滤波或引导滤波进行升采样(Upsampling)技术提高一些耗时算法的速度。
  3. Unknown lifecycle phase &quot;mvn&quot;. You must specify a valid lifecycle phase or a goal in the format &lt;plugin-prefix&gt;:&lt;goal&gt; or &lt;plugin-group-id&gt;:&lt;plugin-artifact-id&gt;[:&lt;plugin-version&gt;]:&lt;goal&gt;
  4. 【工匠大道】将项目同时托管到Github和Git@OSC
  5. 如何正确接收 GitHub 的消息邮件
  6. fibonacci数列从a到b的个数
  7. 整理了一些常用的jQuery动画事件
  8. Professional iOS Network Programming Connecting the Enterprise to the iPhone and iPad
  9. 关于PIL库的一些概念
  10. python是如何进行内存管理的
  11. RocketMQ
  12. [IR] Dictionary Coding
  13. 无法将参数 1 从“WCHAR [256]”转换为“const char *”
  14. Servlet的请求转发和重定向
  15. C语言分割字符串函数strtok
  16. Docker默认存储路径修改
  17. java 文件类 null与exists()是不一样的
  18. Given a binary tree, return the level order traversal of its nodes&#39; values. (ie, from left to right, level by level). For example: Given binary tree {3,9,20,#,#,15,7}, 3 / \ 9 20 / \
  19. PJzhang:工作之余一起来看剧
  20. Java File类 mkdir 不能创建多层目录,如果是多层,可以调mkdirs

热门文章

  1. 软件开发常用的linux命令心得
  2. 微信扫码支付.net版本
  3. PinnedListView分析二
  4. 总结一些笔记上的C和C++知识点
  5. Linux 内核版本,Ubuntu版本的查看
  6. PHP CURL POST提交
  7. Linux之查看切换Shell
  8. Opengl绘制我们的小屋(二)第一人称漫游
  9. (笔记)Linux下C语言实现静态IP地址,掩码,网关的设置
  10. Error configuring application listener of class org.springframework.web.context.ContextLoaderListener