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);
    }
};
基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究”展开,提出了一种结合数据驱动方法与Koopman算子理论的递归神经网络(RNN)模型线性化方法,旨在提升纳米定位系统的预测控制精度与动态响应能力。研究通过构建数据驱动的线性化模型,克服了传统非线性系统建模复杂、计算开销大的问题,并在Matlab平台上实现了完整的算法仿真与验证,展示了该方法在高精度定位控制中的有效性与实用性。; 适合人群:具备一定自动化、控制理论或机器学习背景的科研人员与工程技术人员,尤其是从事精密定位、智能控制、非线性系统建模与预测控制相关领域的研究生与研究人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能预测控制;②为复杂非线性系统的数据驱动建模与线性化提供新思路;③结合深度学习与经典控制理论,推动智能控制算法的实际落地。; 阅读建议:建议读者结合Matlab代码实现部分,深入理解Koopman算子与RNN结合的建模范式,重点关注数据预处理、模型训练与控制系统集成等关键环节,并可通过替换实际系统数据进行迁移验证,以掌握该方法的核心思想与工程应用技巧。
在编程中,`void test` 通常表示一个返回值类型为 `void`(即不返回任何值)且函数名为 `test` 的函数。以下以几种常见编程语言为例介绍其含义及应用: ### C/C++ 在 C 和 C++ 中,`void` 用于表示函数不返回任何值。`void test()` 可以定义一个名为 `test` 的函数,这个函数不返回值,常用于执行一些操作,比如打印信息、修改全局变量等。 ```c #include <stdio.h> // 定义一个返回值为 void 的 test 函数 void test() { printf("This is a test function.\n"); } int main() { test(); return 0; } ``` ### Java 在 Java 中,`void` 同样用于表示方法不返回任何值。可以定义一个名为 `test` 的方法来执行特定任务。 ```java public class Main { // 定义一个返回值为 void 的 test 方法 public static void test() { System.out.println("This is a test method."); } public static void main(String[] args) { test(); } } ``` ### Python Python 没有显式的 `void` 类型,因为函数不返回值时默认返回 `None`。可以定义一个名为 `test` 的函数来执行特定操作。 ```python def test(): print("This is a test function.") test() ``` ### 错误处理 在使用 `void test` 函数时,错误处理也很重要。在 C++ 中,可以使用异常处理机制;在 Java 中,有 `try-catch` 语句;Python 则使用 `try-except` 语句。 以下是 Java 中 `void test` 函数的错误处理示例: ```java public class Main { public static void test() { try { int[] arr = new int[2]; arr[3] = 10; // 会引发数组越界异常 } catch (ArrayIndexOutOfBoundsException e) { System.out.println("An error occurred: " + e.getMessage()); } } public static void main(String[] args) { test(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值