江苏网站建设怎么样企业宣传
1.搜索插入位置
//给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 // // 你可以假设数组中无重复元素。 // // 示例 1: // // 输入: [1,3,5,6], 5 //输出: 2 // // // 示例 2: // // 输入: [1,3,5,6], 2 //输出: 1 // // // 示例 3: // // 输入: [1,3,5,6], 7 //输出: 4 // // // 示例 4: // // 输入: [1,3,5,6], 0 //输出: 0 // // Related Topics 数组 二分查找
这个题目就是一个普通的查找的题目,我们采用两种方法来做,一种是二分查找,一种是线性查找。
public int searchInsert(int[] nums, int target){//普通线性查找/*int i;for (i = 0; i < nums.length; i++) {if (nums[i] >= target) return i;}return i;*/int start = 0;int end = nums.length - 1;while(start <= end){int mid = (start + end)/2;if(target == nums[mid]){return mid;}else{if(target > nums[mid]){start = mid+1;}else{end = mid-1;}}}return start;}
2.外观数组
//给定一个正整数 n ,输出外观数列的第 n 项。 // // 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 // // 你可以将其视作是由递归公式定义的数字字符串序列: // // // countAndSay(1) = "1" // countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一个数字字符串。 // // // 前五项如下: // // //1. 1 //2. 11 //3. 21 //4. 1211 //5. 111221 //第一项是数字 1 //描述前一项,这个数是 1 即 “ 一 个 1 ”,记作 "11" //描述前一项,这个数是 11 即 “ 二 个 1 ” ,记作 "21" //描述前一项,这个数是 21 即 “ 一 个 2 + 一 个 1 ” ,记作 "1211" //描述前一项,这个数是 1211 即 “ 一 个 1 + 一 个 2 + 二 个 1 ” ,记作 "111221" // // // 要 描述 一个数字字符串,首先要将字符串分割为 最小 数量的组,每个组都由连续的最多 相同字符 组成。然后对于每个组,先描述字符的数量,然后描述字符,形成 //一个描述组。要将描述转换为数字字符串,先将每组中的字符数量用数字替换,再将所有描述组连接起来。 // // 例如,数字字符串 "3322251" 的描述如下图: // // // // // // // 示例 1: // // //输入:n = 1 //输出:"1" //解释:这是一个基本样例。 // // // 示例 2: // // //输入:n = 4 //输出:"1211" //解释: //countAndSay(1) = "1" //countAndSay(2) = 读 "1" = 一 个 1 = "11" //countAndSay(3) = 读 "11" = 二 个 1 = "21" //countAndSay(4) = 读 "21" = 一 个 2 + 一 个 1 = "12" + "11" = "1211" // // // // // 提示: // // // 1 <= n <= 30 // // Related Topics 字符串
也是采用两种方法来进行求解,关键是要学会拼接字符串
public String countAndSay(int n) {//递归式/*if(n==1){return "1";}String s = countAndSay(n-1);int i = 0;String res = "";for (int j = 0; j < s.length(); j++) {if(s.charAt(j) != s.charAt(i)){res += (j-i) + "" + s.charAt(i);i = j;}}res += (s.length()-i) + "" + s.charAt(s.length()-1);return res;*///迭代式String res = "1";int k = 0;while (k < n-1){int i = 0;String temp = "";for (int j = 0; j < res.length(); j++) {if(res.charAt(j) != res.charAt(i)){temp += "" + (j-i) + res.charAt(i);i = j;}}res = temp + "" + (res.length()-i) + res.charAt(res.length()-1);k++;}return res;}