算法编程1


算法题

一、二分查找

在升序数组 \textit{nums}nums 中寻找目标值 \textit{target}target,对于特定下标 ii,比较 \textit{nums}[i]nums[i] 和 \textit{target}target 的大小:

如果 \textit{nums}[i] = \textit{target}nums[i]=target,则下标 ii 即为要寻找的下标;

如果 \textit{nums}[i] > \textit{target}nums[i]>target,则\textit{target}target 只可能在下标 ii 的左侧;

如果 \textit{nums}[i] < \textit{target}nums[i]<target,则 \textit{target}target 只可能在下标 ii 的右侧。

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。

示例 1:

输入: nums = [-1,0,3,5,9,12], target = 9
输出: 4
解释: 9 出现在 nums 中并且下标为 4

示例 2:

输入: nums = [-1,0,3,5,9,12], target = 2
输出: -1
解释: 2 不存在 nums 中因此返回 -1

提示:

你可以假设 nums 中的所有元素是不重复的。
n 将在 [1, 10000]之间。
nums 的每个元素都将在 [-9999, 9999]之间。

代码编写

var search = function(nums, target) {
   let low = 0
   let high = nums.length -1
   while(low <= high){
       const mid = Math.floor((high - low)/2) + low
       const num = nums[mid]
       if(num === target){
           return mid
       }else if(num > target){
           high = mid -1
       }else {
           low = mid + 1
       }
   }
   return -1
};

***注意:while 和 if 的区别:

  • while是循环语句,当满足条件时执行语句,执行完循环以后再回来判断是否满足,满足继续执行,然后继续判断,不满足直接执行下面的语句 。
  • if是判断语句,满足条件就行,执行完以后继续执行下面的语句,不会再回来判断执行

二、判定字符是否唯一

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

示例 1:

输入: s = “leetcode”
输出: false

示例 2:

输入: s = “abc”
输出: true

代码如下(示例):

/**
 * @param {string} astr
 * @return {boolean}
 */
var isUnique = function(astr) {
    let arr = new Set(astr)
    return arr.size === astr.length
    
};

js中size和length的区别:

  • length是js的原生方法,用于获取元素的个数和对象的长度
    var length = $(obj).length;
    -size()属于方法,只能作用于对象上,获取元素的个数
    var size = $(obj).size();

三、判定是否互为字符重排

给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

示例 1:

输入: s1 = “abc”, s2 = “bca”
输出: true

示例 2:

输入: s1 = “abc”, s2 = “bad”
输出: false

代码示例:

/**
 * @param {string} s1
 * @param {string} s2
 * @return {boolean}
 */
var CheckPermutation = function(s1, s2) {
    return s1.split('').sort().join('') === s2.split('').sort().join('')

};
data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。