演算法邏輯題整理-中級(1)
1.改變this指向
function bindthis(f, otarget)
return function()
// bind 因為是返回乙個新的函式不會直接執行不用包裹乙個函式
return f.bind(otarget);
}
2.查詢兩個節點的父節點
//contains判斷指定元素內是否包含另乙個元素。即判斷另乙個dom元素是否是指定dom元素的後代
commonparentnode(onode1, onode2) else
}
3.陣列去重
let arr = [false, true,undefined, null,nan,undefined,0,[1,2],[1,2],1,{},{},"a","a",nan,];
普通陣列去重當然只能是初級,這種復合的陣列就稍微有點難度
主要分(基本型別),nan,(陣列,物件)三類處理
function commonparentnode(arr = )
} else if (objstr.indexof(str) == -1) }}
return newarr;
}
4.最長公共字首
輸入:strs = ["flower","flow","flight"]
輸出:"fl"
// 這裡雖然看到用了雙for迴圈但仔細看就明白不會出現大量消耗
var longestcommonprefix = function (strs) }}
return strs[0];
};
5.實現雙向繫結
模擬vue中將data定義的變數全部新增set,get方法達到監聽效果
var data = ;
observe(data);
function observe(data)
// 取出所有屬性遍歷
object.keys(data).foreach(function (key) );
}function definereactive(data, key, val) ,
set: function (newval) ,
});}
採用proxy**屬性比es5簡單優化更好
6.柯里化
// 案例
function curryingadd(x)
}curryingadd(1)(2)
// 執行解析
// 返回乙個匿名方法,並接受乙個引數,此時這個匿名函式拿到了x的值,
// 第二部則變成 function (2)
// 不立即輸出結果,而是返回乙個接受剩餘引數的函式,
// 通用柯里化函式
function curring(fn, arr = ) else
};}
7.同類排序演算法
//給定乙個包含紅色、白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色、白色、藍色順序排列。
此題中,我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色
輸入:nums = [2,0,2,1,1,0]
輸出:[0,0,1,1,2,2]
var sortcolors = function(nums) ;
**8.給定陣列 nums1 和 nums2。請你找出並返回這兩個正序陣列的中位數 **
輸入:nums1 = [1,3], nums2 = [2]
輸出:2.00000
解釋:合併陣列 = [1,2,3] ,中位數 2
var findmediansortedarrays = function (nums1, nums2) );
let ind = math.ceil(arr.length / 2);
// 陣列元素數量為單直接取中間的元素,否則取中兩位元素的平均值
if (arr.length % 2 == 0) else
};
邏輯趣味題整理
1.五個洞排成一排,其中乙個洞裡藏有乙隻狐狸。每個夜晚,狐狸都會跳到乙個相鄰的洞裡 每個白天,你都只允許檢查其中乙個洞。怎樣才能保證狐狸最終會被抓住?2.有23枚硬幣在桌上,10枚正面朝上。蒙住你的眼睛 你無法分清正反 如何分成兩組,讓兩組硬幣正面朝上的一樣多?3.有兩組硬幣,一組100個,另一組2...
1 初級演算法題 旋轉陣列
題目 給定乙個陣列,將陣列中的元素向右移動n個位置,其中n是非負數。輸入 1,2,3,4,5,6,7 和n 3 輸出 5,6,7,1,2,3,4 向右旋轉1步 7,1,2,3,4,5,6 向右旋轉2步 6,7,1,2,3,4,5 向右旋轉3步 5,6,7,1,2,3,4 假設,給定陣列 8,7,6,...
初級演算法梳理 邏輯回歸
1 邏輯回歸與線性回歸的聯絡與區別 線性回歸模型產生的 值是實值y hat,而考慮二分類問題,輸出標記y 可以把線性回歸產生的 值y hat轉化成0 1值,找到乙個單調可微函式將分類任務的 值y hat轉化成0和1。2 邏輯回歸的原理 線性回歸模型產生的 值是實值y hat,而考慮二分類問題,輸出標...