软件工程实验1

删除排序数组中的重复数字 

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

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

public class Solution {
/**
* @param A: a array of integers
* @return : return an integer
*/
public int removeDuplicates(int[] nums) {
// write your code here
if(nums == null || nums.length==0)
return 0;
int index=1;
int j;
for(j=1;j<nums.length;j++)
{
if(nums[j]!=nums[j-1])
{
nums[index]=nums[j];
index++;
}
}
return index;
}
}

买卖股票的最佳时机 

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

class Solution {
public:
/**
* @param prices: Given an integer array
* @return: Maximum profit
*/
int maxProfit(vector<int> &prices) {
// write your code here
int n = 0;
if(prices.length()<2)
return n;
int lowest = prices[0];
for(int i=1;i<prices.length();i++)
{
int cur = prices[i];
n = max(n,cur-lowest);
lowest = min(lowest,cur);
}
return n;
}
};

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

样例

比如n=3,1+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
int i = 0;
if (n == 0 || n == 1){
return 1;
}
else {
i = climbStairs(n - 1) + climbStairs(n - 2);
}
return i;
}
}

posted @ 2017-04-15 18:16  SQJIAO  阅读(127)  评论(0编辑  收藏  举报