Test

算法题目

题目1:在二维数组中搜索数字

给定一个m*n维的矩阵,矩阵符合以下性质:

  • 每行从左到右数字递增
  • 每列从上到下数字递增
例子:

[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]

下面要判断某个数字t是否在矩阵中,如果这个数字t出现的话,返回true,反之返回false

思路:

第一反应是要用二维的二分查找来做,复杂度是O(mn)。但如果仔细观察的话,可以将复杂度缩小至O(m+n)。如果我们从右上角来找,要找的数字比当前数字要小的话,往左寻找即列数减一即可。如果要找的数字比当前数字要大的话,往下寻找即行数加一即可。

代码:
class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {       
        int m = matrix.size();
        int n = matrix[0].size();
        //从右上角开始找
        int row = 0, col = n - 1;
        while(row < m  && col >=0){
            if(matrix[row][col] == target) return true;
            if(matrix[row][col] > target) col--;
            else row++;
        }
        return false;      
     }
};

题目2:数组查找数字第一次出现的位置

对于有序数组,我们寻找当中某个数字第一次出现的位置。没出现的话返回-1。

思路:

依然是二分查找的路子,只不过每次查到后要记录下位置,然后继续往前进行二分查找。找到的位置如果比之前记录的位置要靠前,则更新这个位置,否则不变。一直到找不到退出为止

代码:
class Solution{
public:
    int searchFirstShow(vector<int>& datalist, int target) {  
        int length = datalist.size();
        if(length < 1) return -1;
        int start = 0, stop = length - 1, loc = length;
        while(1){
            int rloc = BinarySearch(data, start, stop, target);
            if( rloc == -1 ) break;
            if( rloc < loc ) {//只往前搜,找到合理的点的时候更新stop
                loc = rloc;
                stop = loc;
            }

        }
        if( loc == length) return -1;
        return loc;
    }  
    int BinarySearch(vector<int>& data, int start, int end, int target){//二分搜索递归写法的主程序
        if(start > end) return -1;
        if(start==end){
            if(data[start]==target) return start;
            else return -1;
            }
        if(a[mid] == target) return mid;
        if(a[mid] > target) return BinarySearch(a,start,mid-1,target);
        return BinarySearch(a,mid+1,stop,target);
    }
};
MATLAB代码实现了一个基于多种智能优化算法优化RBF神经网络的回归预测模型,其核心是通过智能优化算法自动寻找最优的RBF扩展参数(spread),以提升预测精度。 1.主要功能 多算法优化RBF网络:使用多种智能优化算法优化RBF神经网络的核心参数spread。 回归预测:对输入特征进行回归预测,适用于连续值输出问题。 性能对比:对比不同优化算法在训练集和测试集上的预测性能,绘制适应度曲线、预测对比图、误差指标柱状图等。 2.算法步骤 数据准备:导入数据,随机打乱,划分训练集和测试集(默认7:3)。 数据归一化:使用mapminmax将输入和输出归一化到[0,1]区间。 标准RBF建模:使用固定spread=100建立基准RBF模型。 智能优化循环: 调用优化算法(从指定文件夹中读取算法文件)优化spread参数。 使用优化后的spread重新训练RBF网络。 评估预测结果,保存性能指标。 结果可视化: 绘制适应度曲线、训练集/测试集预测对比图。 绘制误差指标(MAE、RMSE、MAPE、MBE)柱状图。 十种智能优化算法分别是: GWO:灰狼算法 HBA:蜜獾算法 IAO:改进天鹰优化算法,改进①:Tent混沌映射种群初始化,改进②:自适应权重 MFO:飞蛾扑火算法 MPA:海洋捕食者算法 NGO:北方苍鹰算法 OOA:鱼鹰优化算法 RTH:红尾鹰算法 WOA:鲸鱼算法 ZOA:斑马算法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值