• 我的第一次


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

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

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

    样例

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

    数据输入:整型数组。

    数据输出:整型数据(最大利润)。

    涉及的数据类型:整型数组,整型变量,for循环体。

    解题思路:令max=0在一个数组中,用后一个单元和前一个单元中的数据做差,如果大于0,则把所得数赋予max,并依次遍历,知道数组中任意两个前后值都做差,找出最大的数即可。

    易错点(需要考虑的特殊情况):

    1、若是差值小于0的话,为没有利润,利润值还是0

    2、不可超过数组最大值。

    主要算法描述(伪代码):定义max初始为0定义变量jh为循环主体j初始为0h初始为1,用for循环嵌套,让prices[0]和后面的每一个数比较做差,然后prices[1]再和其后面的比较做差……并不断比较,赋最大值给max,则最后得到的max就是最大值,

    public class Solution {

        /**

         * @param A: a array of integers

         * @return : return an integer

         */

        public int removeDuplicates(int[] nums) {

            // write your code here

             int n = nums.length;

         int i,j=1;

        if(n == 0)

        return n;

         for(i = 1; i < n; i++)

         {

                 if(nums[i] != nums[j-1])

                 {

                     nums[j++] = nums[i];

                 }

             

        }

        return j;

        }

    }

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

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

    样例

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

    public class Solution {

        /**

         * @param prices: Given an integer array

         * @return: Maximum profit

         */

        public int maxProfit(int[] prices) {

            // write your code here

            int i=prices.length;

            int maxprice=0,differ_price1=0,differ_price2=0;

            int j=0,h=0;

            if(i==2)

            {

            if(prices[1]-prices[0]>0)

            return prices[1]-prices[0];

            else

            return 0;

            }

            

            for(j=0;j<i;j++)

    {

    for(h=j+1;h<i;h++)

    {

    if((prices[h]-prices[j])>maxprice)

    maxprice=prices[h]-prices[j];

    }

    }

    return maxprice;

        }

    }

    题目3:爬楼梯

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

    样例

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

    返回 3

    public class Solution {

        /**

         * @param n: An integer

         * @return: An integer

         */

        public int climbStairs(int n) {

            // write your code here

            if (n <= 1) {

                return 1;

            }

            int i = 1, i_ = 1;

            int result = 0;

            for (int j = 2; j <= n; j++) {

                result = i + i_;

                i_ = i;

                i = result;

            }

            return result;

        }

    }

  • 相关阅读:
    CFree 提示main must return int
    策略模式
    CFree 提示no newline at the end of file
    EEPROM的写入操作解析
    一些关于mic的知识
    一些关于电池的资料
    太阳能电池板日发电量简易计算方法
    ubuntu 下载编译android源代码
    SC44B0的内存地址解析
    RequireJS 2.0 学习笔记一
  • 原文地址:https://www.cnblogs.com/xuchunxiao119/p/6524040.html
Copyright © 2020-2023  润新知