软件工程试验一
题目1:删除排序数组中的重复数字
描述:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。
不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。
样例
给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。
public int removeDuplicates(int[] nums) {
        // write your code here
        	if(nums.length==0)
        	return 0;
        int i;
	    int n=nums.length,j;
	    for(i=0;i<n-1;i++)
	      {
	          if(nums[i+1]==nums[i])
	            {
			        for(j=i;j<n-1;j++)
	                  {
	                     nums[j]=nums[j+1];
                      }
                         n--;
						 i--;
	             }
	       }
	
      	return n;
    }
}
题目2:买卖股票的最佳时机
描述:假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。
样例
给出一个数组样例 [3,2,3,1,2], 返回 1
int maxProfit(vector<int> &prices) {
        // write your code here
        if(prices.empty())return 0;
        int i,j,t=0;
	int min=prices[0];
	for(i=1;i<prices.size();i++)
	   {
	       t=max(t,prices[i]-min);
		   if(min>prices[i])
		   {
		      min=prices[i];
		   }
	   }
	return t;
    }
题目3:爬楼梯
描述:假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?
样例
比如n=3,1+1+1=1+2=2+1=3,共有3中不同的方法
返回 3
int climbStairs(int n) {
        // write your code here
        int array1[1000];
	array1[0]=1;
	array1[1]=1;
	for(int i=2;i<=n;i++)
	  {
		array1[i]=array1[i-1]+array1[i-2];
		
	   }
	return array1[n];
    }
 
                    
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号