Leetcode@Search in Rotated Sorted Array

题目:

Suppose a sorted array is rotated at some pivot unknown to you beforehand.

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

You are given a target value to search. If found in the array return its index, otherwise return -1.

You may assume no duplicate exists in the array.

解题思路

1)直接搜索 时间复杂度O(n) 其实这是最容易想到的解法


class Solution {
public:
    int search(int A[], int n, int target) {  
        if(A == NULL || n <= 0) 
            return -1;  
        for(int i = 0; i < n; ++i)  
            if(A[i] == target)  
                return i;  
        return -1;  
    }  
};  

(2)二分搜索 属于从有序数组中查找某个值的变形 时间复杂度O(logn)

 如果在l到r的区间内搜索,有如下两种情况:

1.A[l] < A[r] 那么表明区间是有序排列的,按照正常的二分搜索处理

2.A[l] > A[r] 这表明区间存在翻转,那么存在一个k,使得A[k]是区间内的最小值,这样,A[l]到A[k] 与A[k+1]到A[r]为两个有序数组

所以只需要对A[mid]与A[r]作比较:

1.如果A[mid] > A[r] 表明一定存在翻转,接下来只需要判断target的位置,如果target位于A[l]和A[mid]之间 ,r = mid - 1,否则l = mid + 1

2.r如果A[mid] < A[r]  ,那么说明从m到r一定是有序的(没有受到rotate的影响),那么我们只需要判断target是不是在mid到r之间如果target位于A[mid]和A[r]之间,正常二分搜索,把左边缘移到mid+1,l = mid + 1,否则,target在另一半,把右边缘移动到mid-1,r = mid - 1

class Solution {
public:
    int search(int A[], int n, int target) {  
        if(NULL == A || 0 == n)  
            return -1;  
        int left = 0, right = n-1, mid = 0;  
        while(left <= right)  
        {  
            mid = left+(right-left)/2;  
            if(A[mid] == target)  
                return mid;  
            else if(A[mid] > A[right])//left  
            {  
                if(A[left] <= target && target < A[mid])  
                    right = mid - 1;  
                else  
                    left = mid + 1;  
  
            }  
            else//right  
            {  
                if(A[mid] < target && target <= A[right])  
                    left = mid + 1;  
                else  
                    right = mid - 1;  
            }  
        }  
  
        return -1;  
    }  
};  

内容概要:本文针对国内加密货币市场预测研究较少的现状,采用BP神经网络构建了CCi30指数预测模型。研究选取2018年3月1日至2019年3月26日共391天的数据作为样本,通过“试凑法”确定最优隐结点数目,建立三层BP神经网络模型对CCi30指数收盘价进行预测。论文详细介绍了数据预处理、模型构建、训练及评估过程,包括数据归一化、特征工程、模型架构设计(如输入层、隐藏层、输出层)、模型编译与训练、模型评估(如RMSE、MAE计算)以及结果可视化。研究表明,该模型在短期内能较准确地预测指数变化趋势。此外,文章还讨论了隐层节点数的优化方法及其对预测性能的影响,并提出了若干改进建议,如引入更多技术指标、优化模型架构、尝试其他时序模型等。 适合人群:对加密货币市场预测感兴趣的研究人员、投资者及具备一定编程基础的数据分析师。 使用场景及目标:①为加密货币市场投资者提供一种新的预测工具和方法;②帮助研究人员理解BP神经网络在时间序列预测中的应用;③为后续研究提供改进方向,如数据增强、模型优化、特征工程等。 其他说明:尽管该模型在短期内表现出良好的预测性能,但仍存在一定局限性,如样本量较小、未考虑外部因素影响等。因此,在实际应用中需谨慎对待模型预测结果,并结合其他分析工具共同决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值