算法编程(二)

python 算法编程练习二 编写程序以检查用户输入的密码的有效性。 以下是检查密码的标准: 1. [a-z]之间至少有1个字母 2. [0-9]之间至少有1个数字 1. [A-Z]之间至少有一个字母 3. [$#@]中至少有1个字符 4.最短交易密码长度:6 5.交易密码的最大长度:12 您的程序应接受一系列逗号分隔的密码,并将根据上述标准进行检查。将打印符合条件的密码,每个密码用逗号分隔。 例:如果以下密码作为程序的输入: ABd1234@1,a F1#,2w3E*,2We3345 然后,程序的输出应该是: ABd1234@1 de 阅读详情

一、用栈来实现队列的功能

    描述:栈,stack,特点是先进后出;队列,queue,先进先出;请使用栈来实现队列的功能,且此队列具有两个基本操作--添加、删除。

 

    这个题本身并不难,但是不能钻”牛角尖“;一个栈是无论如何也无法实现队列的,那么可以考虑用两个栈来试一试:

    1)两个栈A、B,其中一个只能“添加”,另一个只能“删除”。

    2)初始时,栈为空,如果执行“添加”操作,则选定其中一个栈A保存元素,。

    3)如果此后执行“删除”操作,则将栈A的元素逐个pop,且添加到栈B中,此后原来的栈底成了B的栈顶;那么此时从B中移除的元素,就是最早插入的元素;实现了“先进先出”的功能。

    4)此后再添加,则直接添加到A即可;如果移除,还是从B移除,直到B为空,再次执行3)。

 

    面试者还需要适度考虑多线程并发的情况,这一点属于加分项。代码样例:

public static void main(String[] args) {
    Queue<Integer> queue = new Queue<Integer>();
    queue.add(10);
    queue.add(11);
    System.out.println(queue.poll());
    queue.add(12);
    System.out.println(queue.poll());
}

static class Queue<T> {
    Stack<T> addContainer = new Stack<>();
    Stack<T> removeContainer = new Stack<>();

    synchronized void add(T t) {
        addContainer.push(t);
    }

    synchronized T poll() {
       if(removeContainer.isEmpty()) {
           if(addContainer.isEmpty()) {
               return null;
           }
           while (!addContainer.empty()) {
               removeContainer.push(addContainer.pop());
           }
       }
        return removeContainer.pop();
    }
}

 

二、从单向链表中删除指定的节点,且时间复杂度为O(1)

    输入:单向链表,和一个需要被删除的节点

    输出:无

    这个题有几个需要澄清的地方,首先是个单向链表,第二指定了需要删除的节点,注意是节点引用而不是节点值,然后强调复杂度为O(1)

    单向链表,如果要删除一个节点,最直接的思路就是必须找到此节点的“前一个”和“后一个”节点,然后将“前一个”节点的next引用指向“后一个”节点。这种思路下,需要从头遍历链表,逐个比较才能确定指定节点的位置,那么复杂度就是O(1),怎么办?

 

    其实这个题的解决思路不符合常规,既然无法遍历,而且只知道删除节点,那么久将“下一个”节点的值复制过来,转而删除“下一个”节点,很巧妙。(但是在面向对象编程中,其实这种方式不可行,API内部改变节点的值是违法设计原则的)

    public static void remove(LinkedNodes linked,Node target) {
        //如果target为
        Node nextNode = target.next;
        //如果删除尾节点
        if(nextNode == null) {
            target = null;
            return;
        }
        //如果是链表的首个元素
        //我们在设计链表时header是一个标记性的节点,它指向第一个元素
        if(target == linked.header.next) {
            linked.header.next = nextNode;
            return;
        }
        //删除中间节点
        target.value = nextNode.value;//覆盖值
        target.next = nextNode.next;
        nextNode.next = null;//
    }

 

三、从一个单线链表中找到倒数第K个节点

    这个题的解法很多,最基本的方式就是:遍历一次单向链表,计算出链表的总长度N,然后再遍历一次,对于第(N - K + 1)位置的元素,就是倒数第K个。这种实现,很简单,性能也不能说差,但是最大的问题就是需要遍历两次。假如面试官问你:如何在只遍历一次的情况下完成呢?

 

    单向链表的特点就是不能“反向”遍历,如果只遍历一次的话,那么我其实只要能在遍历的时候,以当前节点为基准,标记它的倒数第K个元素的位置就行了;那么当前节点是最后一个元素的时候,那么结果就显而易见了。

   在编程的时候,我们尽可能的兼顾边界情况。代码样例为:

public static Node find(LinkedNodes linked,int k) {
    if(linked == null) {
        return null;
    }
    //我们暂定header是标记性节点,链表的首个元素为header.next
    Node item = linked.header.next;
    //如果链表为空,怎返回
    if(item == null) {
        return null;
    }
    int i= 1;//当前节点的索引位置,从1开始
    Node target = null;
    while (true) {
        if(item == null) {
            break;
        }

        if(i - k >= 0) {
            if(target == null) {
                target = linked.header.next;
            }else {
                target = target.next;
            }
        }
        item = item.next;
        i++;
    }
    return target;

}
static class LinkedNodes {
    Node header = new Node();//标记性节点
    Node tail;
}
static class Node {
    Node next;
    int value;
}

 

四、将一个单向链表反转

    指定一个单向链表,不额外使用其他数据结构的前提下,保持原有元素的相对顺序,将此链表的方向反转。比如:

    输入链表:A -->B-->C-->D-->E

    输出链表:A<--B<--C<--D<--E

    这个题看起来容易,思路也很简单,但是编程的时候,总是小问题居多。

public static void reserve(LinkedNodes linked) {
    if(linked == null) {
        return;
    }
    Node current = linked.header.next;
    if(current == null) {
        return;//如果是空链表
    }

    Node next = current.next;
    current.next = null;//首个节点断开,特殊处理
    while (true) {
        if (next == null) {
            break;
        }
        Node item = next.next;
        next.next = current;
        current = next;
        next = item;
    }
    linked.header.next = current;
}

 

五、将两个有序的单向链表合并成一个新的有序的链表

    现有两个单向链表,链表中的元素按照值正序排列,要求将这两个链表合并成一个新的链表,且新链表中的元素也是正序排列的,两个链表中的元素值有可能重复,而且两个链表的元素个数有可能不同。

 

    其实这个题的实施方式,和“多路合并”非常类似。代码样例如下:

public static LinkedNodes merge(LinkedNodes left,LinkedNodes right) {
    //对于null,我们直接返回即可
    if(left == null || right == null) {
        return null;
    }
    LinkedNodes result = new LinkedNodes();
    Node n1 = left.header.next;
    Node n2 = right.header.next;
    while (true) {
        if(n1 == null && n2 == null) {
            break;
        }

        Node selected;
        //如果其中一个链表已经遍历完毕,则直接将另一个链表数据添加就行
        if(n1 !=null && n2 != null) {
            int v1 = n1.value;
            int v2 = n2.value;
            if(v1 <= v2) {
                selected = n1;
                n1 = n1.next;
            }else {
                selected = n2;
                n2 = n2.next;
            }
        }else if(n1 == null){
            selected = n2;
            n2 = n2.next;
        } else {
            selected = n1;
            n1 = n1.next;
        }

        if(result.header.next == null) {
            result.header.next = selected;
            result.tail = new Node();
        }

        result.tail.next = selected;
        result.tail = selected;
    }
    return result;

}

  

六、将指定的二叉树转换成它的镜像

    所谓镜像,就类似于“镜子的成像”,模拟图示如下:

二叉树:
        1
        |
    2      6
   /\       \
  1 3        8

镜像为:
         1
         |
    6       2
    /       /\
   8       3  1

即任何节点的左右子节点都交换位置

 

    代码样例:

static class BinaryTree {
    BinaryTreeNode root;
}
static class BinaryTreeNode {
    BinaryTreeNode left;
    BinaryTreeNode right;
    int value;
}

public static void mirror(BinaryTree tree) {
    if(tree == null) {
        return;
    }
    BinaryTreeNode root = tree.root;
    mirror(root);
}

private static void mirror(BinaryTreeNode node) {
    if(node == null) {
        return;
    }
    BinaryTreeNode left = node.left;
    BinaryTreeNode right = node.right;
    node.left = right;
    node.right = left;
    mirror(left);
    mirror(right);
}

 

七、写一个简单的多路合并输出的代码

    比如,有两个有序的数组A、B,元素为数字,排序为从小到大,A和B中可能有重复的数字,将A、B数组元素同时作为输入源,请有序输出前N个不同的元素。

    比如:A为{2,3,8,12,25},B为{2,3,5,11,22},输出前6个元素,结果为{2,3,5,8,11,12}

public static int[] merge(int[] a,int[] b,int n) {
    //边界条件
    //TODO
    int al = a.length;
    int bl = b.length;
    int j = 0;
    int c = 0;
    int[] result = new int[n];
    for(int i = 0 ;i < al; i++) {
        if(c >= n - 1) {
            break;
        }
        int x = a[i];
        for(;j< bl;j++) {
            int y = b[j];
            if(x > y) {
                result[c] = y;
                c++;
            }else if(x < y) {
                result[c] = x;
                c++;
                break;
            }
        }
    }
    return result;
}

 

排序算法比较 时间复杂度 稳定性描述 常用排序算法的比较 复杂度 稳定性 shell 归并排序 插入排序 冒泡排序 快速排序 基数排序 立即下载

相关推荐

单链表的快速排序算法

该文件包含了C语言下的单链表的算法实现。

恭喜发财

        ●※▲※●正财、偏财、横财,财源滚滚;亲情、友情、爱情,情情如意!          ★★★★★★ 一二三四五,上山逗老虎;遥遥老虎头,吃穿不用愁。摸摸老虎腿,月月加薪水;拍拍老虎背,存款滚十倍。亲亲老虎嘴,冒险好滋味;祝大家虎年快乐!

sffgghjjjj的专栏 515

达梦数据库集群部署(主备)

达梦数据库集群部署(主备)

m0_71845127的博客 1461

2、编程珠玑笔记二算法

2、编程珠玑笔记二算法          本篇名言:“真实与朴实是天才的宝贵品质。 -- 斯坦尼斯拉夫斯基” 我一直认为程序员花再多时间在数据结构和算法上都不为过,这也是当码农升华为码神的关键。          算法对软件系统影响非常巨大,蛤蟆工作很多时候是进行性能调优工作对此深有体会,一个稍微少一点的算法在高并发压力的时候表现出来的性能就会非常明显了。          第二章,作者

badman250的专栏 3万+

基于docker进行安装部署seata,解决Seata的版本与Nacos的版本不匹配

本文分享了在Docker环境下部署Seata时遇到Nacos 3.x API不兼容问题的解决方案。由于Seata 2.0.0内置的nacos-client 1.4.2无法调用Nacos 3.x重构后的接口,导致注册失败。通过下载Seata 2.6.0源码自行构建Docker镜像,并调整启动方式(直接执行Java命令绕过Shell脚本),最终成功实现与Nacos 3.x的集成。关键步骤包括:创建自定义Dockerfile、配置application.yml、处理启动脚本兼容性问题,最终采用java直接运行方案

Dd52698的博客 407

15、远程操作水下航行器(ROV)的非线性控制系统设计

本文探讨了远程操作水下航行器(ROV)的非线性控制系统设计,重点介绍了多变量PID控制、改进的PD控制和滑模控制三种方法。详细阐述了各控制策略的原理、建模与仿真过程,并通过对比分析其在稳态误差、振荡、抖振及跟踪效果等方面的性能表现。文章还提出了针对不同控制方法的优化建议,并给出了选择合适控制策略的决策流程,为ROV高精度运动控制提供了系统性解决方案。

sun99的博客 156

编程基本算法(二)

在写此文章之前,笔者想说说关于程序员的基本知识,好多园友在博客园上谈论自己的工作经历,或者给毕业生的建议,笔者很赞同期中园友建议在同学在学校里将计算机基础打好,没有良好基础怎么能建大厦呢?有了一些基础基本知识,在去学习深的理论就是事半功倍了,如果是先遇到深理论在去学习相关的基础,那就是事倍功半了。也许许多同学会说,现在的很多企业都招能直接上手的,笔者首先想说那种企业肯定是小企业,鼠目寸光...

dkenp04020的专栏 114

4、基于STM32 NUCLEO - F030R8开发板的嵌入式编程入门

本文详细介绍了如何在STM32 NUCLEO-F030R8开发板上实现LED闪烁功能,作为嵌入式编程的入门实践。内容涵盖开发板组成、跳线设置、项目创建、代码编写与解析、编译运行步骤,以及常见问题解决方法和拓展应用。通过本文学,习者可以掌握嵌入式开发的基本流程,并为后续深入学习打下基础。

m9n0o的博客 83

基于matlab的捷联惯导算法编程(二)

二、基本算法 捷联惯导算法,是按照程序设计的模块化原则,分解为一系列的子函数模块。首先,本文逐个给出各matlab子函数程序,其次,利用各子函数编写捷联惯导算法主程序,构成了算法具体实现的一个框架。最后,载入imu数据中的角速度增量和速度增量与组合导航结算的.pos参考文件进行作图对比。 imu数据:(5条消息) LooselyCoupled-Reference.pos-其它文档类资源-优快云下载 组合导航.pos数据:(5条消息) IMU-Measurements._imu-其它文档类资源-CSD

求阙阁 1万+

【100%通过率】华为od机试C卷【特殊的加密算法】Python 实现

有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。规则如下1.明文为一段数字串由0-9组成2.密码本为数字0-9组成的二维数组3.需要按明文串的数字顺序在密码本里找到同样的数字串,密码本里的数字串是由相邻的单元格数字组成,上下和左右是相邻的,注意:对角线不相邻,同一个单元格的数字不能重复使用。

MISAYAONE的博客 5924

【雷达】基于matlab合成孔径雷达干涉测量(InSAR)时序分析【含Matlab源码 9037期】

合成孔径雷达干涉测量(InSAR)时序分析 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 159

编程中十大常用算法:(二)分治算法

理论介绍 分治算法在日常的编程中经常被使用,观其名知:“分而治之”,将一个复杂的问题分为多个相同或者相似的子问题,在将子问题划分为更小的子问题,直至最后的子问题可以简单的直接求解,子问题的解合并即为原问题的解。 经典运用 1.汉诺塔 2.合并排序 3.快速排序 4.棋盘覆盖 5.循环赛日程表 6.二分搜索 7.最接近点对问题等等… 分治算法的基本步骤 分治算法在每一次递归上都有三个步骤 (1)分解...

z437490133的博客 508

YOLOv8改进 | Conv篇:基于FasterBlock与C2f结构的二次创新,参数量下降70万【附保姆级代码】

通过引入FasterBlock二次创新C2f结构,我们成功地对YOLOv8模型进行了优化,显著降低了其参数量,并提升了推理速度,而精度保持不变甚至有所提升。该模型在多个实际应用场景中展现出了优异的性能,尤其是在嵌入式设备、移动端和自动驾驶等领域,具有广泛的应用潜力。未来的研究将进一步优化模型结构,探索更多的应用场景,为目标检测技术的发展做出贡献。

一键难忘的博客 3215

JAVA面试精选【Java算法与编程二】

在面试中,算法题目是必须的,通过算法能够看出一个程序员的编程思维,考察对复杂问题的设计与分析能力,对问题的严谨性都能够体现出来。算法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。算法常常含有重复的步骤和一些比较或逻辑判断。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个...

qc 97

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LeetCode算法编程之连载二

1、题目 - PalindromePartitioning Given a string s, partition s such that every substring of the partition is a palindrome. Return all possible palindrome partitioning of s. For example, given s ...

weixin_34250709的博客 134

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

编程内功基础之排序算法(二)选择排序

一、 算法简介 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 二、算法步骤 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 重复第二步,直到所有元素均排序完毕。 三、算法动态图 四、代码实现 C++ void SelectionSort_1(std::vector<int> &amp

成长之路 289

【二】【算法分析与设计】编程练习

来源:牛客网时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言65536KKiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用数字组成的数字三角形图案。多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。针对每行输入,输出用数字组成的对应长度的数字三角形,每个数字后面有一个空格。示例1411 21 2 31 2 3 4示例2511 21 2 31 2 3 41 2 3 4 5。

m0_74163972的博客 1264

【算法题】2018今日头条编程题二

使用dp[i,j]表示区间【i,j】能得到计算值的最大值k表示区间【i,j】的最小值min的下标索引则序列结构可表示如下: 【i,k-1】【min】【k+1,j】【i,j】所有子区间分为两种情况:包含min、不包含min在所有包含min的子区间【m,n】中,计算值:min∗sum[m,n]<=min∗sum[i,j]min*sum[m,n] <= min*sum[i,j]所以: dp[i,j]=

xiaxzhou的博客 921

小学C++编程入门书籍及相关资料介绍(二) 算法篇

1.《我的第一本算法书》 1.481张步骤图详解26个算法和7个数据结构的基本原理 2.没有枯燥的理论和复杂的代码,易于理解 3.采用大量彩色图片,清晰直观,便于记忆 4.零基础也能轻松掌握,自学算法的好搭档 内容简介 本书采用大量图片,通过详细的分步讲解,以直观、易懂的方式展现了7个数据结构和26个基础算法的基本原理。 第1章介绍了链表、数组、栈等7个数据结构; 从第2章到第7章,分别介绍了和排序、查找、图论、安全、聚类等相关的26个基础算法,内容涉及冒泡排序.

青少年趣味编程 5015

如何学习编程(二):算法

接着上一篇文章继续往下讲。如果按照上一篇文章走下去的话,现在估计做了有些小软件了吧。字符串和图形都容易做大,而且对于潜意识上喜欢数学的最有希望的程序员们也是有吸引力的。但是这两种东西却不容易做好。等到程序到了一定规模的时候,维护和效率这两大问题就会凸显出来。心急吃不了热豆腐,为了解决维护和效率这两个经常会出现的问题,我们需要学习算法和架构。这两种东西是可以同时学的,但是一篇文章说不了多少...

weixin_30301183的博客 77
上一篇: 算法编程(一)
下一篇: 算法编程(三)
shift_alt_ctrl
博客等级 码龄10年 0粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值