• 实验一


    题目1:删除排序数组中的重复数字

    描述:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。

    不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。

    样例

    给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。

     1 class Solution {
     2     public :
     3     /**
     4      * @param A: a list of integers
     5      * @return : return an integer
     6      */
     7  int removeDuplicates(vector <int>&nums) {
     8         // write your code here
     9 using namespace std;
    10      int j=1;
    11     int i;
    12     int leng=nums.length;
    13     if(leng==0)
    14         return 0;
    15     else if(leng==1)
    16         return 1;
    17     else
    18     {
    19     for(i=0;i<leng;i++)
    20     {
    21         if(nums[i]!=nums[j-1])
    22         {
    23             nums[j++]=nums[i];
    24         }
    25     }
    26     return 0;
    27 }
    28 }

      

    题目2:买卖股票的最佳时机

    描述:假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。

    样例

    给出一个数组样例 [3,2,3,1,2], 返回 1

     1 public class Solution {
     2     /**
     3      * @param n: An integer
     4      * @return: An integer
     5      */
     6     public int climbStairs(int n) {
     7         // write your code here
     8     if(n==0)
     9         return 1;
    10         int []s=new int[n+1];
    11         s[0]=1;
    12         s[1]=1;
    13         for(int i = 2;i<=n;i++)
    14         {
    15             s[i]=s[i-2]+s[i-1];
    16         }
    17         return s[n];
    18     }
    19 };

    题目3:爬楼梯

    描述:假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?

    样例

    比如n=3,1+1+1=1+2=2+1=3,共有3中不同的方法

    返回 3

     1 public class Solution {
     2     /**
     3      * @param n: An integer
     4      * @return: An integer
     5      */
     6     public int climbStairs(int n) {
     7         // write your code here
     8     if(n==0)
     9         return 1;
    10         int []s=new int[n+1];
    11         s[0]=1;
    12         s[1]=1;
    13         for(int i = 2;i<=n;i++)
    14         {
    15             s[i]=s[i-2]+s[i-1];
    16         }
    17         return s[n];
    18     }
    19 };

     

    附加题:

    题目:最长回文子串

    描述:给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。(注:“回文串”是一个正读和反读都一样的字符串)

    样例

    给出字符串 "abcdzdcab",它的最长回文子串为 "cdzdc"。

  • 相关阅读:
    CSS
    网络通信
    模块与包
    python异常处理
    python基础考试一整理
    面向对象最后进阶
    面向对象-反射和__getattr__系列
    property、staticmethod和classmethod
    多态和封装
    scala构造器实战
  • 原文地址:https://www.cnblogs.com/erdai/p/6512291.html
Copyright © 2020-2023  润新知