算法小题

  1. 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

    class Solution {
    public:
        bool Find(int target, vector<vector<int> > array) {
            int m = array.size();//行数
            int n = array[0].size();//列数
            int x =m-1,y=0;
              while(x >= 0 && y < n ){
                if(array[x][y] == target){
                    return true;
                }
                else if(array[x][y] > target)
                {
                    x--;
                     continue;
                }
                 else if(array[x][y] < target)
                {
                    y++;
                     continue;
                }
        }
            return false;
        }
    };

    Find

  2. 输入一个链表,从尾到头打印链表每个节点的值

    /**
    *  struct ListNode {
    *        int val;
    *        struct ListNode *next;
    *        ListNode(int x) :
    *              val(x), next(NULL) {
    *        }
    *  };
    */
    class Solution {
    public:
        vector<int> printListFromTailToHead(ListNode* head) {
            vector<int>dev;
            if(head!=NULL)     //头不为空
            {
                dev.insert(dev.begin(),head->val);  //在vector首插入节点
                while(head->next!=NULL)    //next不为空
                {
                    dev.insert(dev.begin(),head->next->val); //next插入vector节点
                    head = head->next;  //移动节点
                }
            }
            return dev;
        }
    };

  3. 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型

    class Solution
    {
    public:
        void push(int node) {
            stack1.push(node);//新进的元素,压入栈1
        }
    
        int pop() {
            if(stack2.empty()&&stack1.empty()){
                //cout<<“queue is empty”
            }
            if(stack2.empty()){ //如果栈2为空
                while(!stack1.empty()){    //如果栈1不为空
                    stack2.push(stack1.top()); //把栈1的全部数据出栈,压入放入栈2
                    stack1.pop();
                }
            }
            int n = stack2.top();
                stack2.pop();
            return n;//栈2出栈
        }
    
    private:
        stack<int> stack1;
        stack<int> stack2;
    };

  4. 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。测试用例为0,1,1,2,3,5。正确是不应该的有0的

    n<=39

    class Solution {
    public:
        int Fibonacci(int n) {
            int num;
            int num1 = 1;
            int num2 = 1;
            if(n == 0)
            {
                return 0 ;   
    
            }
               if(n == 1 || n==2)
            {
                return 1;
            }
    
            for(int i = 2; i < n; ++i){
              num = num1+num2;
              num1=num2;
              num2=num;
            }
            return num;
        }
    };

时间: 2024-10-03 19:16:38

算法小题的相关文章

leetcode算法小题(3)

问题描述: 判断一个数是否为回文数 class Solution {      public boolean isPalindrome(int x) {           if(x<0)                  return false;           int rs=0; //注意:方法的参数传入进来之后要赋值给d //下面的方法中是对d操作,x的值没有变,方便最后结果与x进行比较           int d=x;           while(d!=0){       

HDU 4006 The kth great number (基本算法-水题)

The kth great number Problem Description Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming can choose to write down a number, or ask Xiao Bao what the kth great number is. Because the number written by Xiao Ming is too mu

腾讯算法逻辑题

前几天小生去了一趟腾讯,接受前端大大的虐待. 整个过程充斥着各种血与泪,特别是他们的算法逻辑题,让我甚是上心.遂mark下,以求甚解... 经过一番思考以及和小伙伴们的共同探索,总算代码的运行结果是符合题目要求了,不过也不确定是否是最佳答案... 且不管了,如果知道有更好的答案再更新便是.. 有人也许会说,骚年,你这样把题目发出来真的好吗?这样不担心是个人都有种去企鹅面前装13吗? 那么我可以很负责任的说,这几道题只是餐前小菜.真正的风浪在后头,假如谁天真的以为有了这几道题就稳了,小心被人当猴看

算法小练#1 - Dany Yang

开始记录每周做过的算法题,这是第一周,新的开始 1021. 删除最外层的括号 题目要求如下: 有效括号字符串为空 ("")."(" + A + ")" 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接.例如,"","()","(())()" 和 "(()(()))" 都是有效的括号字符串. 如果有效字符串 S 非空,且不存在将其拆分为 S

关于js中全局变量和局部变量的寄到小题

往往最基本的也是最根本的. 这里有三道关于全局变量和局部变量的小题,供诸位一阅. 知识点: (1)在最外层声明的是全局变量 (2)在函数内声明的是局部变量 (3)在函数体内部,但是没有用var声明的变量也是全局变量 第一题: var a = 10;function fun(){var a = "global";}console.log(a); 第二题: var a ;function fun(){a = "global";} fun();console.log(a)

HDU 4007 Dave (基本算法-水题)

Dave Problem Description Recently, Dave is boring, so he often walks around. He finds that some places are too crowded, for example, the ground. He couldn't help to think of the disasters happening recently. Crowded place is not safe. He knows there

[LeetCode] 时间复杂度 O(n),空间复杂度 O(1) 的动态规划算法,题 Jump Game

Jump Game Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Determine if you are able to reach the last index. For ex

hdu 1711 KMP算法模板题

题意:给你两个串,问你第二个串是从第一个串的什么位置開始全然匹配的? kmp裸题,复杂度O(n+m). 当一个字符串以0为起始下标时.next[i]能够描写叙述为"不为自身的最大首尾反复子串长度". 当发生失配的情况下,j的新值next[j]取决于模式串中T[0 ~ j-1]中前缀和后缀相等部分的长度, 而且next[j]恰好等于这个最大长度. 防止超时.注意一些细节.. 另外:尽量少用strlen.变量记录下来使用比較好,用字符数组而不用string //KMP算法模板题 //hdu

算法程序设计题语言类笔记

1. 求幂 #include<math.h> //头文件 pow(a,b); //a^b 2. bool #include<stdbool.h> //C中使用bool型需要加入头文件 3. 字符串操作相关 #include<string.h> //头文件 char a[20],b[20]; strcpy(a,b); //把字符串b拷贝到a中 length=strlen(); //求长度 strcmp(a,b); //字符串比较,将a和b中的字符逐个比较,相同继续比较下一