这个求最小值的函数哪有问题

求一堆数组的最小值 编写函数 可以看看吗一直运行的不对诶找不到哪有问题 我很菜

img

1.k<=n
改为
k<n
越界了
2.你现在求的是最大值,m<x[k]要改为m>x[k]
3.printf和return只能保留一个,函数要么直接打印结果,要么返回结果,否则容易重复打印

for 循环 遍历 的判断条件,i <= n, x[n] 的访问会造成越界,这是错误的, i < n 才行
求最小值 ,if 的判断条件 就是 m > x[k] 才对

if (m > x[k])
{
     m = x[k];
}

你这是求最大值了。😅

  1. 循环内的if(m<x[k])改成if(x[k]<m),意思是如果x[k]比m更小,就把m改成x[k];
  2. 循环的条件k<=n有问题,改成k<n。数组x[]的编号从0开始,0到n-1共n个数,最后一位是n-1,所以条件用小于而不是小于等于。
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7587730
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:【无标题】输入一个字符判断它是否为大写字母如果是将他转化为小写字母如果不是不转化直接输出其字符
  • 除此之外, 这篇博客: 关于如何找环形链表的入环点中的 一、判断一个链表是否有环 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 给你一个链表的头节点 head ,判断链表中是否有环。
    如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
    如果链表中存在环 ,则返回 true 。 否则,返回 false 。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    解题思路:

    用快慢指针,慢指针一次往后走一步,快指针一次往后走两步。这样快指针会比慢指针先入环,当慢指针入环被快指针追上时,说明这是一个环形链表,当快指针为空或者指向空时,说明这不是环形链表,返回NULL。

    在这里插入图片描述
    为什么肯定slow 和 fast一定会相遇呢?我们假设当slow入环时,fast到slow的距离为N。
    在这里插入图片描述
    而slow 每次往前走一步,fast 每次往前走两步,那么它们的距离是逐渐递减的。
    在这里插入图片描述
    最后它们之间的距离为 0 时,它们就相遇了。

    那问题来了,如果fast 一次走三步,四步,五步,它能不能在环中与slow相遇呢? 我们假设fast一次走三步。
    fast到slow的距离继续为N
    在这里插入图片描述

    slow 一次走一步, fast一次走三步 , 那么N是每次少2
    在这里插入图片描述
    此时会出现两者情况,一种情况是相遇了,还有一种情况是没相遇。
    当没相遇的时候,fast已经跑到了 slow的前面,也就是它们此时的距离是-1。
    在这里插入图片描述
    设这个环的长度为C,所以它们的距离 N 此时是等于 C-1的。而因为fast一次是走三步的,所以N每次会-2。 当N等于0时它们才会相遇,这也就意味,C-1 如果是偶数,那么它们才会相遇,如果C-1 是奇数,那它们永远不会相遇。所以,fast 一次走两步,它一定会和slow在环里面相遇,slow不用走完一圈。如果fast一次走3,4,5…n步,那么是有可能永远不会与slow相遇的。

    代码如下:

    bool hasCycle(struct ListNode *head) {
        struct ListNode* slow = head;
        struct ListNode* fast = head;
    
        //如果fast为空或者指向空,说明不是环形链表
        while(fast && fast->next)
        {
            //慢指针一次走一步,快指针走两步
            fast = fast->next->next;
            slow = slow->next;
    
            //如果fast 与 slow 相遇,说明是环形链表
            if(fast == slow)
            {
                return true;
            }
        }
        //出了循环,说明不是环形链表
        return false;
    }
    

    题目链接

  • 您还可以看一下 田德华老师的小程序·云开发实战 微信朋友圈所有功能课程中的 点赞图标效果的切换小节, 巩固相关知识点