首页 > 代码库 > 软件工程作业一
软件工程作业一
题目1:删除排序数组中的重复数字
描述:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。
不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。
样例:给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。
1 public class Solution { 2 /** 3 * @param A: a array of integers 4 * @return : return an integer 5 */ 6 public int removeDuplicates(int[] nums) { 7 // write your code here 8 int n = nums.length; 9 int i,j=1; 10 if(n == 0 || n ==1) 11 return n; 12 for(i = 1; i < n; i++) 13 { 14 if(nums[i] != nums[j-1]) 15 { 16 nums[j++] = nums[i]; 17 } 18 19 } 20 return j; 21 } 22 }
题目2:买卖股票的最佳时机
描述:假设有一个数组,它的第i个元素是一支给定的股票在第i天的价格。如果你最多只允许完成一次交易(例如,一次买卖股票),设计一个算法来找出最大利润。
样例:给出一个数组样例 [3,2,3,1,2], 返回 1
1 public class Solution { 2 /** 3 * @param prices: Given an integer array 4 * @return: Maximum profit 5 */ 6 public int maxProfit(int[] prices) { 7 // write your code here 8 int i,j,desc; 9 int n = prices.length; 10 int max_profit = 0; 11 for(i = 0; i < n; i++) 12 { 13 for(j = i+1; j < n; j++) 14 { 15 desc = prices[j] - prices[i]; 16 if(max_profit < desc) 17 max_profit = desc; 18 } 19 } 20 //cout<<max_profit<<endl; 21 return max_profit; 22 } 23 }
题目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[] number = new int[n]; 11 number[0] = 1; 12 if(n > 1) 13 number[1] = 2; 14 for(int i = 2; i < number.length; i++) 15 number[i] = number[i-1] + number[i-2]; 16 return number[number.length-1]; 17 } 18 }
软件工程作业一
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。